我有底部的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)
顺便说一下,RecordMatch1是一个与其他先前查询匹配的数据。
我试图看看这是否可行; (从sql1 中选择*)部分。
sql2 = ' insert into Courses (course_id, creator_id, course_num, record_id) '\
' Values ( select * from sql1)'
cursor.execute(sql2)
或者我必须表达一切而不是使用(选择*)?
什么是最佳做法?
答案 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)
以查看选择会发生什么,并查看每列的键