【问题标题】:Psycopg2 : Create a table in a stored procedure PostgresPsycopg2:在存储过程 Postgres 中创建表
【发布时间】:2018-01-05 19:13:12
【问题描述】:

存储过程:

CREATE OR REPLACE FUNCTION try_create() RETURNS INT AS $$

  BEGIN
      CREATE TABLE hello(id SERIAL PRIMARY KEY, name TEXT);
      RETURN 1;
  END ;

$$ LANGUAGE plpgsql;

test.py

import psycopg2

conn = psycopg2.connect(user='a', password='a', dbname='a')
cur = conn.cursor()
cur.callproc('try_create', ())
print cur.fetchall()

我正在尝试创建一个存储过程,它将创建一个名为hello 的表。我正在使用 python 脚本调用相同的内容。运行上述脚本后,我看到以下输出

[root@localhost partitioning]# python test.py
[(1,)]

但是表不是在数据库中创建的。我在这里做错了吗?谢谢。

【问题讨论】:

    标签: python postgresql psycopg2


    【解决方案1】:

    你应该commit the transaction,添加命令:

    ...
    conn.commit()
    conn.close()
    

    或者,您可以将连接设置为自动提交模式:

    conn = psycopg2.connect(user='a', password='a', dbname='a')
    conn.autocommit = True
    cur = conn.cursor()
    cur.callproc('try_create', ())
    conn.close()
    

    阅读更多关于transactions in psycopg2.

    【讨论】:

    • 谢谢。在我看来,这真是一个愚蠢的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2022-11-14
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多