python - 在psql中使用将相关数据插入到两个表中

标签 python postgresql foreign-key-relationship psycopg2 psql

我是新手,在尝试将相关值同时插入两个表时遇到了障碍。非常感谢您的指导来解决这个问题!

表 1(玩家):

CREATE TABLE players(
  player_id serial PRIMARY KEY,
  player_name  varchar(50) NOT NULL);

表 2(匹配项):

CREATE TABLE matches(
  player_id integer CONSTRAINT fk_links_match_player
  REFERENCES players(player_id) NOT NULL,
  match int NOT NULL,
  match_result varchar(4) NOT NULL
);

我的功能: 我希望函数将值传递给查询。 我已经尝试了多种变体,包括以下但到目前为止没有成功。

def registerPlayer(name):
    cur.execute("""WITH player_key AS
               (INSERT INTO players(player_name) VALUES(%(name)s), {'name': name} RETURNING player_id)
               INSERT INTO matches (player_id, match, match_result) 
               VALUES((SELECT player_key.player_id), 1, 'won') """)

最佳答案

我会这样做:

connection.begin()  # start a transaction
cur.execute("INSERT INTO players (player_name) VALUES (%(name)s) RETURNING player_id", {'name': name})
player_id = cur.fetchone()[0]
cur.execute("INSERT INTO matches (player_id, match, match_result) VALUES (%(player_id)s, 1, 'won')", {'player_id': player_id})
connection.commit()

关于python - 在psql中使用将相关数据插入到两个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44748990/

相关文章:

python - 一次将数组中的每个项目分开

python - Python 中 `from ... import ...` 语法背后的推理

sql - 如何使用移动窗口/分区或任何其他方法获得不同的每周活跃用户/不同的每月活跃用户?

postgresql - 为什么我的 postgres 数据在从备份加载后消失了?

mysql - 向 ActiveRecord 模型关系添加统计信息

excel - 如何使 Excel 成为手动输入的有效关系数据源?

python - 如何从 Pandas 数据框中删除互惠记录?

python插入和检索二进制数据到mysql

postgresql - 不满足特征绑定(bind) `chrono::DateTime<Utc>: FromSql<diesel::sql_types::Nullable<diesel::sql_types::Timestamptz>, Pg>`

sql-server - Entity Framework 不会解决与复合主键的 PK-FK 关系?