首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres SQLalchemy自动识别关系

Postgres SQLalchemy自动识别关系
EN

Stack Overflow用户
提问于 2018-06-11 18:06:40
回答 1查看 787关注 0票数 1

按照sqlalchemy文档和调整中的示例,我为我的数据库编写了以下代码:

代码语言:javascript
复制
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)

运行脚本将返回以下错误:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-21 22:55:37

由于表可以在没有模式的情况下被识别,所以消除了限制,然后使用元数据在没有声明基的情况下自动执行。

以下是指向相关sqlalchemy文档的链接:

  1. 发动机
  2. MetaData
  3. 表格
  4. 选择 从sqlalchemy导入create_engine、metadata、Table,选择engine = create_engine('postgresql://u:pw@db')元数据= MetaData(engine) a= Table('a',元数据,autoload=True,autoload_with=engine) b= Table('b',元数据,autoload=True,autoload_with=engine) ab = a.join(b)查询= select(a.c.id,b.c.id).select_from(ab)结果=conn.execute(查询).fetchone()

运行此脚本将从表a返回第一条记录,从表b返回第一条连接记录。

请注意,此格式完全依赖于两个表之间具有外键连接的数据库。此外,使用这些类将在大多数编辑器中为table.fields提供代码完成,而此方法则不会。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50803680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档