首页 > 解决方案 > SQLAlchemy 和 sql 'Use Database' 命令

问题描述

我正在使用 sqlalchemy 和 create_engine 连接到 mysql,构建数据库并开始填充相关数据。

编辑前言,需要首先创建有问题的数据库。为此,我执行以下命令

database_address = 'mysql+pymysql://{0}:{1}@{2}:{3}'
database_address = database_address.format('username',
                                           'password',
                                           'ip_address',
                                           'port')
engine = create_engine(database_address, echo=False)

Database_Name = 'DatabaseName'
engine.execute(("Create Databse {0}").format(Database_Name)

创建数据库后,我尝试执行“使用”命令,但最终收到以下错误

line 3516, in _escape_identifier
    value = value.replace(self.escape_quote, self.escape_to_quote)

AttributeError: 'NoneType' object has no attribute 'replace'

我将错误追溯到一篇文章,该文章指出在 python 3 中使用以下命令时会发生这种情况

engine.execute("USE dbname")

执行命令中还需要包含什么才能访问 mysql 数据库而不抛出错误。

标签: pythonsqlalchemy

解决方案


您不应该使用该USE命令 - 相反,您应该在连接 url 中指定要连接的数据库create_engine- 即:

database_address = 'mysql+pymysql://{0}:{1}@{2}:{3}/{4}'
database_address = database_address.format('username',
                                           'password',
                                           'ip_address',
                                           'port',
                                           'database')
engine = create_engine(database_address, echo=False)

create_engine文档在这里:https : //docs.sqlalchemy.org/en/13/core/engines.html#mysql


推荐阅读