SQLalchemy - 遍历所有映射表

时间:2017-10-26 14:25:49

标签: python mysql python-3.x flask sqlalchemy

我目前正在Flask中创建一个Web应用程序,并使用SQL-alchemy(不是烧瓶版本)来处理读取和写入MySQL数据库。

我有大约15个不同的表,每个表映射到一个不同的声明性类,但是应用程序仍处于测试阶段,所以这个数字可能会增加。

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

有没有办法遍历所有的SqlAlchemy表?

谢谢!

1 个答案:

答案 0 :(得分:1)

不完全确定你想要在这里实现什么,但如果你使用声明性基础,你可以尝试这样的事情:

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

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

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