sqlalchemy,将 MySQL 字符集设置为“create_engine”参数

Jak*_* M. 7 python mysql sqlalchemy

我创建sqlalchemy连接到 MySQL 数据库的引擎。我想指定charsetcreate_engine参数。

create_engine如果我这样使用:

create_engine('mysql+mysqldb://pd:pd@localhost/pd?charset=utf8') 
Run Code Online (Sandbox Code Playgroud)

那么一切都很好。但是,当我这样使用它时:

create_engine('mysql+mysqldb://pd:pd@localhost/pd', charset='utf8') 
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

TypeError: Invalid argument(s) 'charset' sent to create_engine(), using
    configuration MySQLDialect_mysqldb/QueuePool/Engine. Please check that
    the keyword arguments are appropriate for this combination of components.
Run Code Online (Sandbox Code Playgroud)

根据文档,这种用法应该是可能的:

URL 的字符串形式为 dialect+driver://user:password@host/dbname[?key=value..] ...

**kwargs 采用多种选项,这些选项被路由到适当的组件。参数可能特定于引擎、底层方言以及池。特定方言还接受该方言特有的关键字参数。在这里,我们描述了大多数 create_engine() 用法中常见的参数。

charset为什么我不能单独指定?

zzz*_*eek 5

额外的 DBAPI 参数在单独传递时通过connect_args传递。