【发布时间】:2021-04-21 18:57:58
【问题描述】:
背景
我正在使用从旧版 SQL 转储文件生成的 Mysql 数据库。一些表已从所述 SQL 转储文件中删除。
我要做什么
我正在使用 SQLAlchemy 和 pymysql 来选择行,并通过 the official tutorial:
from sqlalchemy import create_engine, select, MetaData, Table
import pymysql
metadata = MetaData()
db_connection_str = f'mysql+pymysql://{db_user}:{db_password}@localhost/{db_name}'
db_connection = create_engine(db_connection_str)
test_table = Table(<table_name>, metadata, autoload_with=db_connection)
有效,但不适用于所有表格。对于一个特定的表(存在于数据库中),它会抛出这个错误:
ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table '<missing_table_name>' doesn't exist")
[SQL: SHOW CREATE TABLE `<missing_table_name>`]
(Background on this error at: http://sqlalche.me/e/14/f405)
现有表还包含一个MUL 键列,其描述表明它指向<missing_table_name>。在导出 SQL 转储文件之前,<missing_table_name> 似乎已被删除。
是否有一种解决方法可以让我从现有表中选择行?
【问题讨论】:
-
在将数据导入mysql之前从sql转储中删除外键?
-
或者,您可以创建
missing_table_name。但是很难用正确的(预期的)定义来创建它)。
标签: mysql sqlalchemy orm foreign-keys pymysql