代码之家  ›  专栏  ›  技术社区  ›  Toby Weed

sqlalchemy自定义关键字参数失败,返回typeerror:“argument”是此函数的无效关键字参数

  •  1
  • Toby Weed  · 技术社区  · 6 年前

    我需要向sqlalchemy的 create_engine 函数,以便ssl授权我与aws rds的数据库连接。 here 我是说, here here 建议我使用sqlalchemy的 connect_args 传入我的自定义关键字参数。我试过:

    engine = create_engine(os.environ['DB_URI'], connect_args={'ssla':'amazon-rds-ca-cert.pem'})
    

    但是,我下面的字体错误,这是相同的错误,其他海报说 连接参数 为他们修复:

    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),所以不可能是这样。

    请帮忙!

    1 回复  |  直到 6 年前
        1
  •  2
  •   nosklo    6 年前

    参数被传递到上游,即mysql dbapi模块-sqlalchemy所做的只是调用 connect 所选模块的函数。

    如你所见 https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html sslca 不是一个有效的参数 连接 函数-正确的参数名称将是 ssl_ca 我想?

    换句话说,您必须找出如何直接使用python mysql,而不使用sqlalchemy—sqlalchemy不是这里的罪魁祸首

    你也说

    但是,我没有安装mysqldb,所以使用它的必须是sqlalchemy。

    sqlalchemy不是数据库,它不连接任何东西。它只是一个层,你必须为它提供一个数据库模块来连接到数据库。