簡體   English   中英

Flask-SQLAlchemy檢查數據庫中是否存在表

[英]Flask-SQLAlchemy check if table exists in database

Flask-SQLAlchemy檢查數據庫中是否存在表。 我看到類似的問題,但我盡量不成功。

Flask-SQLAlchemy檢查表中是否存在行

我創建了一個表對象,如下所示:

<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。

很感謝。

我用過這些方法。 像你一樣看模型只會告訴你應該在數據庫中做什么。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM