【发布时间】:2016-06-27 11:44:09
【问题描述】:
我正在运行以下版本的软件:
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 派生的值,以便在以后的查询中使用它?
感谢您的宝贵时间!
【问题讨论】:
标签: python sql database postgresql psycopg2