數據庫副本我沒有意識到,正在偵聽默認端口5432,這是插入發生的地方。我應該通過我想要連接的數據庫的自定義端口。Psycopg2插入未保存
的東西,我認爲可能是顯著:從使用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,)]
具有相同的憑據連接,在同一臺機器到DB:
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
如果你使用'returned *'而不是''返回id',該怎麼辦? –
它返回正確的,完整的對象,但仍然不在數據庫中。我將徹底改變問題文本,所以它會有一個更簡單的例子。 – Giannis