【问题标题】:Easily check if table exists with python, sqlalchemy on an sql database在 sql 数据库上使用 python、sqlalchemy 轻松检查表是否存在
【发布时间】:2021-02-27 20:43:39
【问题描述】:

您好,我正在使用 sqlalchemy 和 pandas 处理一些数据,然后将所有内容保存到 sql 数据库中的表中。我正在尝试找到一种快速简单且标准化的方法来根据表名检查数据库中是否存在表。

我找到了has_table() 函数,但没有工作示例。有没有人有类似给出“引擎连接”和“表名”的东西->如果表存在则返回真或假

【问题讨论】:

    标签: python database sqlalchemy


    【解决方案1】:

    使用 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

    【讨论】:

    • 这几乎是正确的我测试了它但它没有为我运行我不知道为什么我必须添加 insp.dialect.has_table。
    • 你用的是什么方言?以上对我有用mssql+pyodbc
    • 可能是不同版本的库吗?因为inspector对象根本没有has_table函数
    • 我很抱歉。我正在针对 1.4 版代码库进行测试。顺便说一句,1.4 现在处于公开测试阶段;看看吧!
    • @Freude - schema= 关键字参数默认为 None,因此您可以简单地省略它。
    【解决方案2】:

    所以我根据第一次回复的想法制作了这个功能:

    def table_exists(engine,name):
        ins = inspect(engine)
        ret =ins.dialect.has_table(engine.connect(),name)
        print('Table "{}" exists: {}'.format(name, ret))
        return ret
    

    【讨论】:

      猜你喜欢
      • 2017-03-31
      • 2014-07-27
      • 2017-05-11
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      相关资源
      最近更新 更多