SQLalchemy迭代所有映射表

用户

我目前正在Flask中创建一个web应用程序,并使用sqlalchemy(不是Flask版本)来处理对MySQL数据库的读写操作。在

我有大约15个不同的表,每个表映射到不同的声明类,但是应用程序仍处于beta阶段,因此这个数字可能会增加。在

我希望有一种方法可以遍历每个表,并对每个表运行相同的命令。这是更新功能的一部分,管理员可以更改一本书的名称,此名称更改应反映在引用该书的所有其他表中。在

有没有一种方法可以遍历所有SqlAlchemy表?在

谢谢!在


已被浏览了7519次
更新日期: 2020-10-28 20:00:19
1 个回答
fefe Tyson

不完全确定您希望在这里实现什么,但是如果您使用声明性基,可以尝试如下方法:

tables = Base.__subclasses__()
for t in tables:
    rows = Session.query(t).all()
    for r in rows:
        ... do something ...

它通过列出Base的子类来获取所有表。然后它依次查询每个表中的所有内容,并循环选定的行。在

但是,我不太明白你为什么要这么做。你如何描述你的问题是你应该有一个书桌,如果其他人想参考书的话,所有其他人都可以链接到它。这将是关系模型,而不是在每个表中拖动有关书籍的信息并尝试像这样手动管理它们。在

评论 - 2020年8月26日 20:24

最新Python问答

推荐Python问答