Flask-SQLAlchemy检查数据库中是否存在表

use*_*623 6 python database sqlalchemy flask

Flask-SQLAlchemy检查数据库中是否存在表。我看到类似的问题,但我尝试不成功。

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

我创建了一个表对象,如下所示:

<class'flask_sqlalchemy.XXX'>,
Run Code Online (Sandbox Code Playgroud)

现在如何检查对象是否存在于数据库中。

我做了很多尝试:例如:

   for t in db.metadata.sorted_tables:
            print("tablename",t.name)
Run Code Online (Sandbox Code Playgroud)

以前创建了一些表对象,但现在数据库中不存在该对象。全部打印。例如:打印内容是

tablename? table_1
tablename? table_2
tablename? table_3
Run Code Online (Sandbox Code Playgroud)

但是只有table_1是数据表?table_2和table_3是动态表吗?现在我只想使用table_1。

很感谢。

Har*_*vey 7

我用过这些方法。像您一样查看模型只会告诉您数据库中应该包含的内容。

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
Run Code Online (Sandbox Code Playgroud)

可能有比这更简单的方法:

def model_exists(model_class):
    engine = db.get_engine(bind=model_class.__bind_key__)
    return model_class.metadata.tables[model_class.__tablename__].exists(engine)
Run Code Online (Sandbox Code Playgroud)

  • 注意:未定义`engine` 引用 (5认同)