我对SQLAlchemy ORM还是个新手。我使用的是mySQL数据库,我在一个.sql文件中导入了它的模式。我创建了引擎,连接到数据库。我将MetaData和Session对象绑定到引擎。但是当我运行:
for t in metadata.tables:
print(t.name)
出现以下错误:
fkey["referred_table"] = rec["TABLENAME"]
KeyError: 'TABLENAME'
那么,我在这里做错了什么?这是一些基本的东西吗?下面是完整的代码:
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import *
engine = create_engine('mysql://sunnyahlawat:miq182@localhost/sqsunny')
engine.connect()
Session = sessionmaker(bind=engine)
session = Session()
metadata = MetaData(bind = engine, reflect = True)
#metadata.reflect(bind = engine)
for t in metadata.tables:
print(t.name)
#print(engine.table_names())
2条答案
按热度按时间wqsoz72f1#
如果引用的数据库是数据转储,并且有问题的表具有链接到尚未导出且不在同一服务器上的外部数据库的外键,则会出现此错误。在这种情况下,外键约束条件失败。一种可能的解决方案是删除约束条件-如果只是在测试环境中尝试此方法。
zphenhs42#
在SQLAlchemy中,至少有一列(键)必须是主键。如果没有列成为主键,则SQLAlchemy将引发ArgumentError或KeyError。