Python SQLAlchemy自定义关键字参数失败,TypeError:';参数';是此函数的无效关键字参数

Python SQLAlchemy自定义关键字参数失败,TypeError:';参数';是此函数的无效关键字参数,python,sqlalchemy,mysql-python,Python,Sqlalchemy,Mysql Python,我需要向SQLAlchemy的create_engine函数传递一个自定义参数,以便SSL授权我与AWS RDS的数据库连接,建议我使用SQLAlchemy的connect_args传入自定义关键字参数。我试过: engine = create_engine(os.environ['DB_URI'], connect_args={'ssla':'amazon-rds-ca-cert.pem'}) 但是,我发现了以下类型的错误,这与其他海报所说的connect\u args修复的错误相同: Ty

我需要向SQLAlchemy的
create_engine
函数传递一个自定义参数,以便SSL授权我与AWS RDS的数据库连接,建议我使用SQLAlchemy的
connect_args
传入自定义关键字参数。我试过:

engine = create_engine(os.environ['DB_URI'], connect_args={'ssla':'amazon-rds-ca-cert.pem'})
但是,我发现了以下类型的错误,这与其他海报所说的
connect\u args
修复的错误相同:

TypeError: 'ssla' is an invalid keyword argument for this function
看来我做得完全正确。我还尝试在连接字符串中传递关键字参数:

mysql://name:password@localhost/test?sslca=amazon-rds-ca-cert.pem
并更改关键字参数的名称,使其与中的示例完全匹配:

然而,仍然没有运气。这个错误似乎是由MySQLdb在错误消息中抛出的,所以可能是那里的错误

File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 411, in connect
    return self.dbapi.connect(*cargs, **cparams)
File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/MySQLdb/__init__.py", line 86, in Connect
    return Connection(*args, **kwargs)
File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
TypeError: 'ssla' is an invalid keyword argument for this function
但是,我没有安装MySQLdb,所以使用它的一定是SQLAlchemy。我有最新版本的SQLAlchemy(1.2.8),所以不可能是这样


请帮忙

参数正在向上游传递,也就是说,传递到您的mysql dbapi模块-sqlalchemy所做的就是从所选模块调用
connect
函数

正如您在这里看到的,
sslca
不是
connect
函数的有效参数-我想正确的参数名称应该是
ssl\u ca

换句话说,您必须找到如何直接使用python mysql做您想要做的事情,而根本不使用sqlalchemy——sqlalchemy不是罪魁祸首

你也说

但是,我没有安装MySQLdb,所以使用它的一定是SQLAlchemy


SQLAlchemy不是数据库,它不连接任何东西。它只是一个层,您必须为它提供一个数据库模块以用于连接数据库。

Smart,您是对的。然而,我尝试了ssl_ca(和ssl_cert),它们被认为是有效的参数——除了更新的名称外,错误消息没有任何更改。此外,我认为SQLAlchemy必须自动处理与MySQLdb的连接(无需我提供),因为它在没有我配置任何数据库模块的情况下都能顺利工作(如果我删除ssl_ca参数)。虽然我确实安装了mysqlclient。但我向您保证,SQLAlchemy本身无法连接到任何数据库-它将始终使用其他模块。我建议使用优秀的
oursql
连接到mysql数据库-我们在生产中使用它。其中的参数名为
ssl
,它可以自动工作。SQLAlchemyly使用MySQLdb。但无论如何,MySQLdb的连接参数文档有点误导——MySQLdb的连接函数实际上要求SSL参数的格式为:
{'SSL':{'ca':'value'}}
而不是
{'sslca':'value'}
File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 411, in connect
    return self.dbapi.connect(*cargs, **cparams)
File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/MySQLdb/__init__.py", line 86, in Connect
    return Connection(*args, **kwargs)
File "/Users/tobyweed/workspace/ftm/live-event-market/server/serverenv/lib/python2.7/site-packages/MySQLdb/connections.py", line 204, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
TypeError: 'ssla' is an invalid keyword argument for this function