如何在通过变量搜索时从一个表中选择 user_ID 并插入到另一个表中? Python 我的 SQL

Posted

技术标签:

【中文标题】如何在通过变量搜索时从一个表中选择 user_ID 并插入到另一个表中? Python 我的 SQL【英文标题】:How do I Select user_ID from one table and insert into another while searching by a variable? Python my SQL 【发布时间】:2020-12-28 23:58:58 【问题描述】:

总的来说,我对编程和 SQL 比较陌生。 所以我正在创建一个系统,用户可以在其中登录并将事件输入日历并查看它们的显示。 为此,我创建了一个users 表,它注册了用户的用户名和密码,并在注册时为他们分配了一个ID。然后我为events 制作了第二张表,我想在其中列出所有事件。但是,我需要在 events 表中插入记录,但其中一个属性是来自 users 表的 User_ID 字段,以便我以后可以按 ID 对其进行排序。

我的两个表是通过wamp服务器在phpmyadmin中设置的,但是创建和查询都是在代码中完成的。我一直在寻找相关的问题,但没有找到解决方案

无论如何,我需要做出如下选择语句:

query = """SELECT ID FROM users2 where name = '%s'"""

(名称是用户名表中的一列)

%s 将是用户的用户名。) 然后将其输入到另一个表中,如下所示:

sql = ("INSERT INTO events 
    (userID, Event_Name, Event_Date, Priority)
    VALUES (%s,%s,%s,%s)", (user_ID, name_of_event,
     Event_Date, priority_number))

(此时user_ID基本上是未定义的。我是否将user_ID定义为=cursor.execute(query)?)

我需要帮助来获取user_ID 并首先执行此选择语句,因为我一直将 0 作为值。感谢您提前提供任何帮助

【问题讨论】:

完全不清楚(对我而言)您在寻找什么。你能发布一个示例输入和输出吗?另外,请记住:您不必在一个查询中完成所有操作,也不必在服务器上完成所有操作。 【参考方案1】:

如果我没听错,你可以使用insert ... select

insert into events (userid, event_name, event_date, priority)
select id, %s, %s, %s
from users2
where name = %s

这会按name 过滤users2。然后对于每个匹配项,在events 中插入一行,对应的userid 和其他三列的三个字面量常量值。

您可以按以下顺序将参数传递给查询:

 name_of_event,
 event_date, 
 priority_number,
 user_name

请注意,如果您想始终如一地执行此操作,您可能需要在 users2(name) 上设置一个 unique 键,因此按名称过滤是明确的。

【讨论】:

query = """INSERT INTO events (userID, Event_Name, Event_Date, Priority) SELECT ID, %s, %s, %s FROM users2 WHERE name = %s""", (name_of_event, Event_Date, priority_number, name_of_user) cursor.execute(query) 给我一个 'TypeError: can't concat tuple to bytes error' 当我做 cursor.execute(query, name_of_event, Event_Date, priority_number, name_of_user) 我收到一个 .TypeError : execute() 接受 2 到 3 个位置参数,但给出了 6 个。错误,那我现在该怎么办? 我也试过 cursor.execute(query ,(name_of_event, Event_Date, priority_number, name_of_user)) 但没有记录插入到表中。

以上是关于如何在通过变量搜索时从一个表中选择 user_ID 并插入到另一个表中? Python 我的 SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何通过将一个表中的 id 与另一个表匹配来选择和更新一个表中的记录?

从一个表中选择 attachment_id 并在另一个表中选择 user_id

MYSQL通过多个用户ID选择消息线程ID [重复]

如何使用 NSFetchedResultsController 在另一个表中单击同一项目时从一个表中删除项目

Oracle 可选绑定变量

如何使用外键从 2 个表中获取所有数据