Psycopg2:在存储过程 Postgres 中创建一个 table
Psycopg2 : Create a table in a stored procedure Postgres
存储过程:
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
的 table。我正在使用 python 脚本调用相同的方法。在 运行 上面的脚本中,我看到以下输出
[root@localhost partitioning]# python test.py
[(1,)]
但是 table 不是在数据库中创建的。我在这里做错了什么吗?谢谢。
您应该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.
存储过程:
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
的 table。我正在使用 python 脚本调用相同的方法。在 运行 上面的脚本中,我看到以下输出
[root@localhost partitioning]# python test.py
[(1,)]
但是 table 不是在数据库中创建的。我在这里做错了什么吗?谢谢。
您应该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.