2017-09-14 120 views
0

我试图插入已经在一个MySQL表中的数据到另一个,使用Python。列名在每个表中都是相同的,并且objkey是我想要用于告诉mysql要查看的列的项目的区分片段。从一个表插入MySQL数据到另一个与python

import MySQLdb 

db = MySQLdb.connect(host='', user='', passwd='', db='') 
cursor = db.cursor 

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE %s;" % ((name, desig, data, num), name, desig, data, num, obj = repr(objkey)) 
cursor.execute(sql) 

db.commit() 
db.close() 

它说我有一个语法错误,但我不知道在哪里,因为我敢肯定,应该有周围的字段名括号中的第一次,但没有第二个。任何人都知道我在做什么错了?

+0

您必须在第一行放置要写入的表的列名称,并且您正在阅读的表中的列名在第二行。所以在这个答案中,catid和title不会指向同一个表。 –

+0

你用'obj = repr(objkey)'尝试什么?可能显示你想要的SQL语句。 – Parfait

+0

你能显示实际的错误信息吗? – sadmicrowave

回答

0

我不是很确定你想用obj = repr(objkey)行来做什么,但是python认为你正在用这行定义变量,而不是设置sql语法(如果这确实是你的愿望)。

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE %s;" % ((name, desig, data, num), name, desig, data, num, obj = repr(objkey)) 

也许应该改为类似:

sql = "INSERT INTO newtable (%s, %s, %s, %s) SELECT %s, %s, %s, %s FROM oldtable 
WHERE obj=%;" % ((name, desig, data, num), name, desig, data, num, repr(objkey)) 

但即便如此,你需要的地方定义为一个Python变量objkey

这个答案可能会失败,但您需要定义您期望通过obj = repr(objkey)实现的目标,以获得更准确的答案。

相关问题