2015-10-23 61 views
0

使用ON重复键这些是在表MyTable的以下输入错误,同时插入重复的值到DP,使用Python MySQL数据库

mysql> select * from myTable; 
+------+--------+------+ 
| id | name | age | 
+------+--------+------+ 
| 110 | c  | 23 | 
| 114 | chadns | 897 | 
| 1112 | chadns | 897 | 
+------+--------+------+ 

这是MyTable的的模式

mysql> desc myTable; 
+-------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+-------------+------+-----+---------+----------------+ 
| id | int(3)  | NO | PRI | NULL | auto_increment | 
| name | varchar(10) | YES |  | NULL |    | 
| age | varchar(10) | YES |  | NULL |    | 
+-------+-------------+------+-----+---------+----------------+ 

在执行以下代码我得到以下错误

import MySQLdb 

con_local = MySQLdb.connect(host ="127.0.0.1",user = "root",passwd ="ctl",db ="ads") 
cursor_local = con_local.cursor() 

cursor_local.execute("select * from myTable") 
x = cursor_local.fetchall() 



for i in x: 

    s = "insert into myTable values(%d,%s,%s) on duplicate key update id = id+1000" 

    cursor_local.execute('''insert into myTable values(%d,%s,%s) on duplicate key update id = id+1000'''%(i[0],i[1],i[2])); 
    cursor_local.execute("commit"); 

错误:

Traceback (most recent call last): 
    File "chandu.py", line 15, in <module> 
    cursor_local.execute('''insert into Chandana values(%d,%s,%s) on duplicate key update id = id+1000'''%(i[0],i[1],i[2])); 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.OperationalError: (1054, "Unknown column 'c' in 'field list'") 

我试图插入重复的值,但是改变了主键ID,但它不工作谁能告诉我解决

+0

'执行(“”''为什么3个单引号开放? – Alex

+1

您可能需要引用查询中的字符串,或者使用准备好的查询,如Alex的回答。 – Barmar

回答

1
cursor_local.execute("insert into myTable values(%d,%s,%s) on duplicate key update id = id+1000",(int(i[0]),i[1],i[2])); 
+0

文件“/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py”,第159行,执行 query = query%db.literal(args) TypeError:%d格式:需要一个数字,而不是str – user3646858

+0

我正在使用%d,它不能连接字符串,因此 – user3646858

+0

因此将其更改为可在大多数情况下工作的'%s' – Alex

相关问题