psycopg2.errors.DuplicateTable:关系“表名”已存在,但实际上不存在

Puf*_*ers 5 python postgresql psycopg2 flask

我不断收到此错误 psycopg2.errors.DuplicateTable: relation "customers" already exists ,我知道这意味着什么。

问题是,当我运行程序时,实际上没有名为“ customers”的表。为了确保这一点,我创建了一个没有表的新数据库,或者在运行代码之前再次检查了现有数据库中是否没有这样的表。我添加了打印语句,以检查其冲突之处。

def createTable():
    conn = pg.connect(conn_str)
    cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)

    sql = """
    create table customers
    ( 
       ... 
    )
    """
    print("checking 1111111")                # printed
    cur.execute(sql)

    print("checking 2222222")                # not printed
    conn.commit()

if __name__ == "__main__":
    createTable() 
    app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

我可以通过添加IF NOT EXISTS来解决该问题,sql但我真的很想知道为什么,因为这是曾经完美运行的代码的一部分。

[编辑]添加了我做的确保表不存在的操作