python - 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 数据库而不抛出错误。
解决方案
您不应该使用该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
推荐阅读
- r - Matlab 到 R 代码“~exist”代码转换
- vue.js - 无法加载预加载脚本 - Electron.js Ubuntu 18.04.4
- python - 为什么我不能使用 eval() 返回的值再次调用计算器函数并使用答案计算其他内容?
- ruby-on-rails - 使用主动模型序列化程序的自定义 Json 响应
- javascript - React redux 映射状态到 props 数组在更新时为空
- java - Maven多模块项目循环依赖问题
- java - Firebase 实时数据库的权限被拒绝
- javascript - 我无法控制台记录最后一个块输出?为什么会发生?
- python - 无法在 Windows 上安装 dotenv
- reactjs - React 使用钩子 UseState 和 UseEffect 重新渲染简单组件两次