如何解决SQLAlchemy:遍历反射数据库中的所有相关表以生成用于测试的样本数据 背景、目的目前的方法问题
背景、目的
- 应由实际行组成,
- 应该允许使用跨任何层次结构深度的联接(例如父/子/孙...等)跨相关表进行查询
目前的方法
我已经反映了数据库,并且正在使用 SLQAlchemy 的 inspect
查找所有相关表。迭代这个方法 n 次应该让我遍历 n 个深度级别的层次结构:
from sqlalchemy import create_engine,select,MetaData,Table,func,inspect
from sqlalchemy.orm import Session
from sqlalchemy.ext.automap import automap_base
import pyMysqL
Metadata = MetaData()
db_connection_str = f'MysqL+pyMysqL://{db_user}:{db_password}@localhost/{db_name}'
Base = automap_base()
Base.prepare(db_connection,reflect=False)
Event = Base.classes.event # Here,'Event' is the root/main table from where the traversal begins
num_rows = 10 # Sample
stmt = select(*inspect(Event).persist_selectable.columns).limit(num_rows)
with Session(db_connection) as session:
resultlist = session.execute(
stmt
).all()
'''
Store the Event table query result somehow
'''
'''
Following section is a first-level traversal. This needs to be iterated to get nth-level traversals
'''
sample_event_id_list = [row[0] for row in resultlist] # 1st column is ID,is there a better way that involves key mapping rather than integer indexing?
sample_event_id_list
for rel in inspect(Event).relationships:
object_class = rel.mapper.class_
stmt = select(*inspect(object_class).persist_selectable.columns).\
join(Event).\
where(Event.id.in_(sample_event_id_list))
'''
Store the Event table query result somehow
'''
问题
我看过 Factory Boy,它与 sqlAlchemy 集成,还可以从实际数据生成行样本。但是否可以遍历数据库中所有相关表尚不清楚。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。