SQLAlchemy custom keyword arguments failing with TypeError: 'argument' is is an invalid keyword argument for this function
SQLAlchemy custom keyword arguments failing with TypeError: 'argument' is is an invalid keyword argument for this function
我需要将自定义参数传递给 SQLAlchemy 的 create_engine
函数,以便 SSL 授权我与 AWS RDS 的数据库连接。 here, here, and here 建议我使用 SQLAlchemy 的 connect_args
来传递我的自定义关键字参数。我试过了:
engine = create_engine(os.environ['DB_URI'], connect_args={'ssla':'amazon-rds-ca-cert.pem'})
但是,我遇到了以下 TypeError,这与其他发帖者所说 connect_args
为他们修复的错误相同:
TypeError: 'ssla' is an invalid keyword argument for this function
看来我做的完全正确。我还尝试在连接字符串中传递关键字参数:
mysql://name:password@localhost/test?sslca=amazon-rds-ca-cert.pem
并更改关键字参数的名称以与 sqlalchemy docs 中的示例完全匹配:
db = create_engine('mysql://name:password@localhost/test', connect_args = {'argument2':'bar'})
然而,还是没有运气。错误消息中似乎是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
函数。
正如您在此处看到的那样 https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html sslca
不是 connect
函数的有效参数 - 我认为正确的参数名称应该是 ssl_ca
?
换句话说,你必须找出如何直接用 python-mysql 做你想做的事情,根本不使用 sqlalchemy - sqlalchemy 不是这里的罪魁祸首
你也说
However, I don't have MySQLdb installed, so it must be SQLAlchemy which is using it.
SQLAlchemy 不是数据库,它不连接任何东西。它只是一层,你必须提供一个数据库模块,它才能用来连接数据库。
我需要将自定义参数传递给 SQLAlchemy 的 create_engine
函数,以便 SSL 授权我与 AWS RDS 的数据库连接。 here, here, and here 建议我使用 SQLAlchemy 的 connect_args
来传递我的自定义关键字参数。我试过了:
engine = create_engine(os.environ['DB_URI'], connect_args={'ssla':'amazon-rds-ca-cert.pem'})
但是,我遇到了以下 TypeError,这与其他发帖者所说 connect_args
为他们修复的错误相同:
TypeError: 'ssla' is an invalid keyword argument for this function
看来我做的完全正确。我还尝试在连接字符串中传递关键字参数:
mysql://name:password@localhost/test?sslca=amazon-rds-ca-cert.pem
并更改关键字参数的名称以与 sqlalchemy docs 中的示例完全匹配:
db = create_engine('mysql://name:password@localhost/test', connect_args = {'argument2':'bar'})
然而,还是没有运气。错误消息中似乎是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
函数。
正如您在此处看到的那样 https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html sslca
不是 connect
函数的有效参数 - 我认为正确的参数名称应该是 ssl_ca
?
换句话说,你必须找出如何直接用 python-mysql 做你想做的事情,根本不使用 sqlalchemy - sqlalchemy 不是这里的罪魁祸首
你也说
However, I don't have MySQLdb installed, so it must be SQLAlchemy which is using it.
SQLAlchemy 不是数据库,它不连接任何东西。它只是一层,你必须提供一个数据库模块,它才能用来连接数据库。