創造了紀錄我運行的軟件,以下版本:Psycopg2使用外鍵
Python 3.5
psycopg2==2.6.1
Postgres 9.4.5
我有2個表。表User
具有UserId (serial PK)
,LastName
,FirstName
,Gender
,DateOfBirth
和DateEnrolled
。表UserProfile
具有UserProfileId (serial, PK)
,UserId (FK)
,DateEntered
, FaveNumber
和Activity
。有一對多的關係。
以下PostgreSQL的工作原理,最終在UserProfile中創建一個關聯UserId(FK)的記錄。
\set last_name '''Sara'''
\set first_name '''Jackson'''
\set gender '''F'''
\set dob '''1941-1-12'''
\set fave_number '''3'''
\set activity '''volleyball'''
WITH ins_user AS (
INSERT INTO User
(LastName, FirstName, Gender, DateOfBirth, DateEnrolled)
VALUES (:last_name, :first_name, :gender, :dob, now())
RETURNING UserId)
INSERT INTO UserProfile
(UserId, DateEntered, FaveNumber, Activity)
VALUES ((SELECT UserId FROM ins_user), now(), :fave_number :activity);
我該如何構建一個psycopg2 cur.execute查詢來完成上面的PostgreSQL?我已經閱讀過文檔,但似乎無法處理如何構建此命令。
我的出發點是:
cur.execute(\
"""INSERT INTO User \
(LastName, FirstName, Gender, DateOfBirth, DateEnrolled) \
VALUES (%s, %s, %s, %s, %s) RETURNING UserId;""", \
(last_name, first_name, gender, date_of_birth, now(), ??...??)
此外,是有可能提取RETURNING UserId
衍生該值,以便它可以在後面的查詢中使用?
謝謝你的時間!
>爲響應感謝。我不知道我可以將字典作爲參數傳遞給cur.execute。 +1表示現在將日期設置爲()作爲表中的默認值! – Aaron