【发布时间】:2013-03-29 23:32:39
【问题描述】:
我有一组表,它们都有一个日期列(没有时区的时间戳)等于插入的时间。
如何使用日期列删除所有表中超过 24 小时的所有数据,最好不使用模型显式删除每个表?
这就是我现在从所有表中删除所有内容的方法,但是在添加日期测试时感觉有些不便。
#!/usr/bin/env python
import sqlalchemy
engine = sqlalchemy.create_engine('postgresql+psycopg2://user:password@host:port/database')
meta = sqlalchemy.MetaData()
meta.reflect(bind=engine)
for table in reversed(meta.sorted_tables):
engine.execute(table.delete())
【问题讨论】:
-
您要删除表中的所有行吗?无法从代码中分辨出来。如果是这样,您可以使用
truncate代替delete- 在 pg 中,快得多 -
是的,它会删除使用 sqlalchemy.MetaData().reflect() 检索到的每个表中的所有内容。如果你想删除整个表,你的截断是对的,但这不是我想要的,它似乎超出了我的问题范围。
-
这很酷。知道pg,但根本不明白你的问题。祝你好运!
标签: python postgresql datetime python-2.7 sqlalchemy