Sqlalchemy. Exc. Argumenterror: Could Not Parse Rfc1738 Url from String
I'm Learning Flask Web Microframework and After Initialization of My Database I Run Flask Db Init I Run Flask Db Migrate, to Migrate My Models Classes to the...
I'm learning flask web microframework and after initialization of my database I run flask db init I run flask db migrate, to migrate my models classes to the database and i got an error. I work on Windows 10, the database is MySQL, and extensions install are flask-migrate, flask-sqlalchemy, flask-login.
(env) λ flask db migrate
Traceback (most recent call last):
File "c:\python36\Lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\python36\Lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\aka\Dev\dream-team\env\Scripts\flask.exe\__main__.py", line 9, in <module>
File "c:\users\aka\dev\dream-team\env\lib\site-packages\flask\cli.py", line 513, in main
cli.main(args=args, prog_name=name)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\flask\cli.py", line 380, in main
return AppGroup.main(self, *args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 697, in main
rv = self.invoke(ctx)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 535, in invoke
return callback(*args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\flask\cli.py", line 257, in decorator
return __ctx.invoke(f, *args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\click\core.py", line 535, in invoke
return callback(*args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\flask_migrate\cli.py", line 90, in migrate
rev_id, x_arg)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\flask_migrate\__init__.py", line 197, in migrate
version_path=version_path, rev_id=rev_id)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\alembic\command.py", line 176, in revision
script_directory.run_env()
File "c:\users\aka\dev\dream-team\env\lib\site-packages\alembic\script\base.py", line 427, in run_env
util.load_python_file(self.dir, 'env.py')
File "c:\users\aka\dev\dream-team\env\lib\site-packages\alembic\util\pyfiles.py", line 81, in load_python_file
module = load_module_py(module_id, path)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\alembic\util\compat.py", line 83, in load_module_py
spec.loader.exec_module(module)
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "migrations\env.py", line 87, in <module>
run_migrations_online()
File "migrations\env.py", line 70, in run_migrations_online
poolclass=pool.NullPool)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\sqlalchemy\engine\__init__.py", line 465, in engine_from_config
return create_engine(url, **options)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\sqlalchemy\engine\__init__.py", line 424, in create_engine
return strategy.create(*args, **kwargs)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\sqlalchemy\engine\strategies.py", line 50, in create
u = url.make_url(name_or_url)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\sqlalchemy\engine\url.py", line 211, in make_url
return _parse_rfc1738_args(name_or_url)
File "c:\users\aka\dev\dream-team\env\lib\site-packages\sqlalchemy\engine\url.py", line 270, in _parse_rfc1738_args
"Could not parse rfc1738 URL from string '%s'" % name)
sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 'mysql/dt_admin:dt2016@localhost/dreamteam_db'
5 Answers
You are not using a valid URL in the connection string.
Review the documentation on how the MySQL connection URLs need to be structured: .
Depending on the MySQL driver that you use the connection URL is different. For example, if you use pymysql, your URL should be:
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
i'd forget the port number to enter the port, this is the URL connection string:
`SQLALCHEMY_DATABASE_URI = 'mysql://dt_admin:dt2016@localhost:3308/dreamteam_db'
it work now, thanks
make sure that there is no space or newline in the URI string
URL in the connection string is not valid.
you can check the documentation on how the MySQL connection URLs need to be structured here : .
Example syntax for postgresql with psycopg2 driver it look like this :-
sql_alchemy_conn = postgresql+psycopg2://ubuntu@localhost:5432/airflow
just had to remove the quotes
I was using like that:
sql_alchemy_conn = 'postgresql://user:password@host:port/db'
And this worked:
sql_alchemy_conn = postgresql://user:password@host:port/db