【发布时间】:2021-02-27 20:43:39
【问题描述】:
您好,我正在使用 sqlalchemy 和 pandas 处理一些数据,然后将所有内容保存到 sql 数据库中的表中。我正在尝试找到一种快速简单且标准化的方法来根据表名检查数据库中是否存在表。
我找到了has_table() 函数,但没有工作示例。有没有人有类似给出“引擎连接”和“表名”的东西->如果表存在则返回真或假
【问题讨论】:
标签: python database sqlalchemy
您好,我正在使用 sqlalchemy 和 pandas 处理一些数据,然后将所有内容保存到 sql 数据库中的表中。我正在尝试找到一种快速简单且标准化的方法来根据表名检查数据库中是否存在表。
我找到了has_table() 函数,但没有工作示例。有没有人有类似给出“引擎连接”和“表名”的东西->如果表存在则返回真或假
【问题讨论】:
标签: python database sqlalchemy
使用 SQLAlchemy 1.4+,您可以使用 inspect 对象调用 has_table,如下所示:
import sqlalchemy as sa
# …
engine = sa.create_engine(connection_uri)
insp = sa.inspect(engine)
print(insp.has_table("team", schema="dbo")) # True (or False, as the case may be)
对于 SQLAlchemy 的早期版本,请参阅另一个答案 here。
【讨论】:
mssql+pyodbc。
schema= 关键字参数默认为 None,因此您可以简单地省略它。
所以我根据第一次回复的想法制作了这个功能:
def table_exists(engine,name):
ins = inspect(engine)
ret =ins.dialect.has_table(engine.connect(),name)
print('Table "{}" exists: {}'.format(name, ret))
return ret
【讨论】: