正确的连接字符串传递给 sqlalchemy create_engine() for mysql AWS RDS

Proper connection string to pass to sqlalchemy create_engine() for mysql AWS RDS

我不知道(也找不到示例)要传递给 sqlalchemycreate_engine() 的连接字符串,它允许我连接到 mysql 数据库在 Amazon Web Service RDS 上。文档很简单,但我被绊倒了。 文档状态:

mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>

假设:

这有什么问题?

    conn_str = 'mysql+mysqldb://<hellothere>:<Comp<'/"/>{}]:["licated>@<sandbox.cbaspyqqzfab.us-west-2.rds.amazonaws.com>[:<3306>]/<nameofdatabase>'
    engine = sqlalchemy.create_engine(conn_str, echo=True)

错误信息

Traceback (most recent call last): File
 "C:/GitHub/blah/data/__init__.py", line 16, in <module> main() File
 "C:/GitHub/blah/data/__init__.py", line 12, in main init_db() File
 "C:/GitHub/blah/data/__init__.py", line 8, in init_db
 DbSessionFactory.global_init(db_file=dbfilepath) File
 "C:\GitHub\blah\data\dbsession.py", line 25, in global_init engine =
 sqlalchemy.create_engine(conn_str, echo=True) File
 "C:\Python\Anaconda3\envs\CE\lib\site-packages\sqlalchemy\engine\__init__.py",
 line 387, in create_engine return strategy.create(*args, **kwargs)
 File
 "C:\Python\Anaconda3\envs\CE\lib\site-packages\sqlalchemy\engine\strategies.py",
 line 80, in create dbapi = dialect_cls.dbapi(**dbapi_args) File
 "C:\Python\Anaconda3\envs\CE\lib\site-packages\sqlalchemy\dialects\mysql\mysqldb.py",
 line 110, in dbapi return __import__('MySQLdb') ModuleNotFoundError:
 No module named 'MySQLdb'

如果我指定一个本地文件并使用 sqlite 它工作正常,所以我认为其余代码没问题。

    conn_str = 'sqlite:///' + 'dbfile.sqlite'

我尝试了很多不同的方法,有和没有 <>,但我得到了同样的错误。我不知道我是否需要对密码中的特殊字符进行转义,或者问题是否更根本并且我未正确连接到 RDS。我使用 R 中的 RMySQL 包进行连接并且它有效,所以我认为我的问题与网络或防火墙无关。我在网上看到的所有示例都用上面的文档代替了连接字符串,因为(显然)他们不想公开他们的凭据,所以我很难找到可以模仿的东西。有什么想法吗?

安装 mysql-connector
后有效 pip install mysql-connector