存储过程:
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,)]
但该表不是在db上创建的。我在这里搞错了吗?感谢。
答案 0 :(得分: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()