Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python mysql.connector.errors.ProgrammingError:SQL语句中未使用所有参数_Python_Mysql - Fatal编程技术网

Python mysql.connector.errors.ProgrammingError:SQL语句中未使用所有参数

Python mysql.connector.errors.ProgrammingError:SQL语句中未使用所有参数,python,mysql,Python,Mysql,以下是我的python脚本: #!/usr/bin/env python import mysql.connector cnx = mysql.connector.connect(user='qdb1', password='qdb1', host='170.19.17.9', database='qdb1') cursor = cnx.cursor() insert_sql = ("insert into qdb1.amis" " (CUSTOMER_NAM

以下是我的python脚本:

#!/usr/bin/env python  

import mysql.connector
cnx = mysql.connector.connect(user='qdb1', password='qdb1', host='170.19.17.9', database='qdb1')
cursor = cnx.cursor()

insert_sql = ("insert into qdb1.amis"
              " (CUSTOMER_NAME, AWS_ACCOUNT, AMI_START, CRT_REGION_PRIMARY, CRT_REGION_DR1, CRT_REGION_DR2, DBAPP_INST_ID, DBAPP_AMI_ID, DBAPP_AMI_NAME, VISTA_INST_ID, VISTA_AMI_ID, VISTA_AMI_NAME, WS_INST_ID, WS_AMI_ID, WS_AMI_NAME, DEL_REGION_PRIMARY, DEL_REGION_DR1, DEL_REGION_DR2, DELETED_AMI_PRIMARY, DELETED_SNAP_PRIMARY, DELETED_AMI_DR1, DELETED_SNAP_DR1, DELETED_AMI_DR2, DELETED_SNAP_DR2, SUCCESSFUL) "
              "values ( %(CUSTOMER_NAME)s , %(AWS_ACCOUNT)s , %(AMI_START)s , %(CRT_REGION_PRIMARY)s , %(CRT_REGION_DR1)s , %(CRT_REGION_DR2)s , %(DBAPP_INST_ID)s , %(DBAPP_AMI_ID)s , %(DBAPP_AMI_NAME)s , %(VISTA_INST_ID)s , %(VISTA_AMI_ID)s , %(VISTA_AMI_NAME)s , %(WS_INST_ID)s , %(WS_AMI_ID)s , %(WS_AMI_NAME)s , %(DEL_REGION_PRIMARY)s , %(DEL_REGION_DR1)s , %(DEL_REGION_DR2)s , %(DELETED_AMI_PRIMARY)s , %(DELETED_SNAP_PRIMARY)s , %(DELETED_AMI_DR1)s , %(DELETED_SNAP_DR1)s , %(DELETED_AMI_DR2)s , %(DELETED_SNAP_DR2)s , %(SUCCESSFUL)s)")

print insert_sql

insert_data = ('SERVER1', '68687687876','2014-12-29 13:27:46', 'us-west-9', 'None', 'None', 'i-gtsuid43', 'ami-9jsh222f', 'DBAPP-SERVER', 'i-4wj333e3', 'ami-73eee351', 'VISTA-SERVER', 'i-5464ssse', 'ami-4ddd2853', 'WS-QSERVER', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 'none', 1)

cursor.execute(insert_sql, insert_data)
cnx.commit()
cursor.close()
我遇到以下错误,需要帮助消除此错误:

/usr/bin/python ./test.py
insert into qdb1.amis (CUSTOMER_NAME, AWS_ACCOUNT, AMI_START, CRT_REGION_PRIMARY, CRT_REGION_DR1,
CRT_REGION_DR2, DBAPP_INST_ID, DBAPP_AMI_ID, DBAPP_AMI_NAME, EVISTA_INST_ID, EVISTA_AMI_ID, 
EVISTA_AMI_NAME, WS_INST_ID, WS_AMI_ID, WS_AMI_NAME, DEL_REGION_PRIMARY, DEL_REGION_DR1, 
DEL_REGION_DR2, DELETED_AMI_PRIMARY, DELETED_SNAP_PRIMARY, DELETED_AMI_DR1, DELETED_SNAP_DR1,  
DELETED_AMI_DR2, DELETED_SNAP_DR2, SUCCESSFUL) values ( %(CUSTOMER_NAME)s , %(AWS_ACCOUNT)s , % 
(AMI_START)s , %(CRT_REGION_PRIMARY)s , %(CRT_REGION_DR1)s , %(CRT_REGION_DR2)s , %(DBAPP_INST_ID)s ,  
%(DBAPP_AMI_ID)s , %(DBAPP_AMI_NAME)s , %(EVISTA_INST_ID)s , %(EVISTA_AMI_ID)s , %(EVISTA_AMI_NAME)s  
, %(WS_INST_ID)s , %(WS_AMI_ID)s , %(WS_AMI_NAME)s , %(DEL_REGION_PRIMARY)s , %(DEL_REGION_DR1)s , % 
(DEL_REGION_DR2)s , %(DELETED_AMI_PRIMARY)s , %(DELETED_SNAP_PRIMARY)s , %(DELETED_AMI_DR1)s , %(DELETED_SNAP_DR1)s , %(DELETED_AMI_DR2)s , %(DELETED_SNAP_DR2)s , %(SUCCESSFUL)s)
Traceback (most recent call last):
  File "./test.py", line 18, in <module>
    cursor.execute(insert_sql, insert_data)
  File "/usr/lib/python2.6/site-packages/mysql/connector/cursor.py", line 498, in execute
    "Not all parameters were used in the SQL statement")
mysql.connector.errors.ProgrammingError: Not all parameters were used in the SQL statement
/usr/bin/python./test.py
插入qdb1.amis(客户名称、AWS账户、AMI开始、CRT地区、CRT地区、DR1、,
CRT_地区DR2、DBAPP_仪器ID、DBAPP_仪器ID、DBAPP_仪器名称、EVISTA_仪器ID、EVISTA_仪器ID、,
EVISTA\u AMI\u NAME、WS\u INST\u ID、WS\u AMI\u ID、WS\u AMI\u NAME、DEL\u REGION\u PRIMARY、DEL\u REGION\u DR1、,
DEL_REGION_DR2、DELETED_AMI_PRIMARY、DELETED_SNAP_PRIMARY、DELETED_AMI_DR1、DELETED_SNAP_DR1、,
已删除\u AMI\u DR2,已删除\u SNAP\u DR2,成功)值(%(客户名称)s、%(AWS\u帐户)s、%
(AMI_START)s、%(CRT_REGION_PRIMARY)s、%(CRT_REGION_DR1)s、%(CRT_REGION_DR2)s、%(DBAPP_INST ID)s、,
%(DBAPP_AMI_ID)s、%(DBAPP_AMI_NAME)s、%(EVISTA_INST_ID)s、%(EVISTA_AMI_ID)s、%(EVISTA_AMI_NAME)s
,%(WS_INST_ID)s、%(WS_AMI_ID)s、%(WS_AMI_NAME)s、%(DEL_REGION_PRIMARY)s、%(DEL_REGION_DR1)s、%
(删除区域DR2)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(删除主要)s、%(成功)s)
回溯(最近一次呼叫最后一次):
文件“/test.py”,第18行,在
执行(插入sql,插入数据)
文件“/usr/lib/python2.6/site packages/mysql/connector/cursor.py”,第498行,在execute中
“并非SQL语句中使用了所有参数”)
mysql.connector.errors.ProgrammingError:SQL语句中未使用所有参数

要在mysql connector中使用“命名占位符”,您要执行的第二个参数应该是将这些名称作为键的字典,而不是元组(您正在使用的)或列表。或者,使用“未命名占位符”
“%s”

此问题是由于括号引起的。这是我的密码。看看这个。这是绝对的

import mysql.connector

my_database = mysql.connector.connect(host="localhost", user="root", passwd="kazinaim", database = "naim")

my_cursor = my_database.cursor()

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val_1 = [('kazi' , 'jatrafbari'),
    ('kazi' , 'jatrafbari'),
    ('kazi' , 'jatrafbari'), ('kazi', 'jatrafbari'),('kazi' , 'jatrafbari')]



my_cursor.executemany(sql, val_1)

my_database.commit()

print(my_cursor.rowcount, "data inserted")

有太多的内容让我无法计数,但您的
列表似乎有一个额外的值,或者您的列名列表缺少一个值。要在mysql connector中使用“命名占位符”,正如您所做的那样,
execute
的第二个参数应该是一个将这些名称作为键的字典,而不是元组(如您所使用的)或列表。或者,使用未命名的占位符,如
“?”
@AlexMartelli。您应该将此评论作为答案发布。但是,我认为未命名的占位符应该是
%s
,而不是
@augurar,done。你说得对,似乎“
qmark
stile”不被接受——我想知道为什么我会有不同的想法。这不是一个人对StackOverflow的回答。