使用(从表中选择*)将数据插入表中

时间:2017-08-28 17:22:54

标签: python mysql

我有底部的MySql查询(sql1)。

sq1 = 'select course_id, creator_id, max(course_num) + 1, recordid 
  ' from Courses where recordid in' \
  ' (' + ','.join(map(str, RecordMatch1)) + ') group by recordid'
cursor.execute(sql1)

顺便说一下,R​​ecordMatch1是一个与其他先前查询匹配的数据。

我试图看看这是否可行; (从sql1 中选择*)部分。

sql2 = ' insert into Courses (course_id, creator_id, course_num, record_id) '\
   ' Values ( select * from sql1)'
cursor.execute(sql2)

或者我必须表达一切而不是使用(选择*)?

什么是最佳做法?

3 个答案:

答案 0 :(得分:2)

您可以执行此操作,但应在架构更改时指定列。

答案 1 :(得分:1)

只需确认您正在尝试运行选择查询并将其输出插入到插入查询中。如果是这种情况,这似乎是好的。

答案 2 :(得分:1)

是的,你可以,但你应该做点像

sql = "SELECT course_id, creator_id, course_num, record_id FROM Courses" 
all = cursor.fetchall()
for i in range(len(all))
    sql1 = "INSERT INTO Courses (course_id, creator_id, course_num, record_id) VALUES (%s, %s, %s, %s)"
    cursor.execute(sql1, (all[i]['Key'], all[i]['Key2'], all[i]['Key3'], all[i]['Key3']))

你可以改变你想要的选择,记住返回一个字典所以要注意关键,添加print(all)以查看选择会发生什么,并查看每列的键