按照sqlalchemy文档和调整中的示例,我为我的数据库编写了以下代码:
from sqlalchemy.ext.automap import automap_base
from sqlalchemy import create_engine, MetaData
engine = create_engine('postgresql://u:pw@db')
metadata = MetaData(schema='name')
metadata.reflect(engine, only=['a', 'b'])
Base = automap_base(bind=engine, metadata=metadata)
Base.prepare()
A, B = Base.classes.a, Base.classes.b
result = A.first()
print(result.id)运行脚本将返回以下错误:
File "/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 705, in runfile
execfile(filename, namespace)
File "/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "/Users/<User>/untitled0.py", line 18, in <module>
Base.prepare(engine,reflect=True)
File "/anaconda3/lib/python3.6/site-packages/sqlalchemy/ext/automap.py", line 788, in prepare
generate_relationship)
File "/anaconda3/lib/python3.6/site-packages/sqlalchemy/ext/automap.py", line 895, in _relationships_for_fks
local_cls, referred_cls):
TypeError: issubclass() arg 2 must be a class or tuple of classes发布于 2018-06-21 22:55:37
由于表可以在没有模式的情况下被识别,所以消除了限制,然后使用元数据在没有声明基的情况下自动执行。
以下是指向相关sqlalchemy文档的链接:
运行此脚本将从表a返回第一条记录,从表b返回第一条连接记录。
请注意,此格式完全依赖于两个表之间具有外键连接的数据库。此外,使用这些类将在大多数编辑器中为table.fields提供代码完成,而此方法则不会。
https://stackoverflow.com/questions/50803680
复制相似问题