Psycopg2 插入未保存
Psycopg2 insert not saved
一个我不知道的数据库副本正在侦听默认端口 5432,这是插入发生的地方。我应该为我要连接的数据库传递自定义端口。
我认为可能很重要的事情:从 fetchall() 返回的 id 与实际直接从 psql 插入的不同。
我执行的脚本:
import os
import psycopg2
conn_config = {
'host': os.environ['DB_HOST'],
'dbname': os.environ['DB_NAME'],
'user': os.environ['DB_USER'],
'password': os.environ['DB_PASSWD']
}
conn = psycopg2.connect(**conn_config)
cur = conn.cursor()
sql = """INSERT INTO file(file_title, file_descrip) VALUES ('test','giannis') RETURNING file_id;"""
cur.execute(sql)
print(cur.fetchall())
conn.commit()
cur.close()
conn.close()
输出:
>>>[(76,)]
使用相同的凭据从同一台机器连接到数据库:
select * from file where file.file_id=76;
file_id | file_title | file_stream | file_descrip | obj_uuid
---------+------------+-------------+--------------+----------
(0 rows)
并且从 psql 中的同一个会话,复制上面的 SQL 语句:
INSERT INTO file(file_title, file_descrip) VALUES ('test','giannis') RETURNING file_id;
file_id
---------
57
(1 row)
INSERT 0 1
my_db=> select * from file where file.file_id=57;
-[ RECORD 1 ]+-------------------------------------
file_id | 57
file_title | test
file_stream |
file_descrip | giannis
obj_uuid | 396d5d3b-efe1-422a-a6b4-d9b21381d4be
您似乎没有提交交易。在连接关闭前调用 conn.commit()
。
一个我不知道的数据库副本正在侦听默认端口 5432,这是插入发生的地方。我应该为我要连接的数据库传递自定义端口。
我认为可能很重要的事情:从 fetchall() 返回的 id 与实际直接从 psql 插入的不同。
我执行的脚本:
import os
import psycopg2
conn_config = {
'host': os.environ['DB_HOST'],
'dbname': os.environ['DB_NAME'],
'user': os.environ['DB_USER'],
'password': os.environ['DB_PASSWD']
}
conn = psycopg2.connect(**conn_config)
cur = conn.cursor()
sql = """INSERT INTO file(file_title, file_descrip) VALUES ('test','giannis') RETURNING file_id;"""
cur.execute(sql)
print(cur.fetchall())
conn.commit()
cur.close()
conn.close()
输出:
>>>[(76,)]
使用相同的凭据从同一台机器连接到数据库:
select * from file where file.file_id=76;
file_id | file_title | file_stream | file_descrip | obj_uuid
---------+------------+-------------+--------------+----------
(0 rows)
并且从 psql 中的同一个会话,复制上面的 SQL 语句:
INSERT INTO file(file_title, file_descrip) VALUES ('test','giannis') RETURNING file_id;
file_id
---------
57
(1 row)
INSERT 0 1
my_db=> select * from file where file.file_id=57;
-[ RECORD 1 ]+-------------------------------------
file_id | 57
file_title | test
file_stream |
file_descrip | giannis
obj_uuid | 396d5d3b-efe1-422a-a6b4-d9b21381d4be
您似乎没有提交交易。在连接关闭前调用 conn.commit()
。