Flask-SQLAlchemy检查数据库中是否存在表。 我看到类似的问题,但我尽量不成功。
Flask-SQLAlchemy check if row exists in table
我创建了一个表对象,如下所示:
<class'flask_sqlalchemy.XXX'>,
现在如何检查对象是否存在于数据库中。
我做了很多尝试: 例如:
for t in db.metadata.sorted_tables:
print("tablename",t.name)
之前创建了一些表对象,但它在数据库中并不存在,现在它们已经存在。所有印刷品。 例如:打印内容
tablename: table_1
tablename: table_2
tablename: table_3
但只有table_1存在数据,table_2和table_3是dynamica创建的,现在我只想使用table_1。
非常感谢。答案 0 :(得分:1)
我使用了这些方法。像你一样看模型只会告诉你数据库应该是什么。
import sqlalchemy as sa
def database_is_empty():
table_names = sa.inspect(engine).get_table_names()
is_empty = table_names == []
print('Db is empty: {}'.format(is_empty))
return is_empty
def table_exists(name):
ret = engine.dialect.has_table(engine, name)
print('Table "{}" exists: {}'.format(name, ret))
return ret
可能有一种比这更简单的方法:
def model_exists(model_class):
engine = db.get_engine(bind=model_class.__bind_key__)
return model_class.metadata.tables[model_class.__tablename__].exists(engine)