2017-03-06 62 views
0

所以我想输入数据到我的表中作为变量,但我似乎继续得到错误mysql.connector.errors.ProgrammingError:并非所有参数都用在SQL语句中,我使用了%s而不是行名,但我似乎一直在获取相同的错误。我怀疑这是我的语法,但我似乎无法弄清楚顺便说一句,这是使用python和MySQL一起Mysql Python:并非所有参数都用在MySQL语句中

import mysql.connector 


Sensor_ID = "test" 

Location = "room" 

Sensor_IP = "192.168.1.1" 

Sensor_1 = "10" 

Sensor_1_Unit = "*C" 

Sensor_2 ="" 

Sensor_2_Unit = "" 

Sensor_3 = "" 

Sensor_3_Unit = "" 

conn = mysql.connector.connect(user='******', password='********', host='******', database='*****') #blanked my user n pass 
mycursor = conn.cursor() 
mycursor.execute('SHOW TABLES') 
print(mycursor.fetchall()) 
print "" 

mycursor.execute("SHOW VARIABLES LIKE '%version%'") 
print "Version:",(mycursor.fetchall()) 
#works up to here 

mycursor.execute("INSERT INTO iot_sensors VALUES (ID, Sensor_ID, Location, Sensor_IP, Sensor_1, Sensor_1_Unit, Sensor_2,Sensor_2_Unit, Sensor_3, Sensor_3_Unit)",(Sensor_ID,Location,Sensor_IP,Sensor_1,Sensor_1_Unit,Sensor_2,Sensor_2_Unit,Sens or_3,Sensor_3_Unit)) 
conn.commit() 

    # Sensor_ID,Location,Sensor_IP,Sensor_1,Sensor_1_Unit,Sensor_2,Sensor_2_Unit,Sensor_3,Sensor_3_Unit 

CREATE TABLE IoT_Sensors(

ID INT NOT NULL AUTO_INCREMENT我的第一次,

Sensor_ID VARCHAR(15)NOT NULL,

位置VARCHAR(20)NOT NULL,

Sensor_IP VARCHAR(15)NOT NULL,

Sensor_1 VARCHAR(15)NOT NULL,

Sensor_1_Unit VARCHAR(15)NOT NULL,

Sensor_2 VARCHAR(15),

Sensor_2_Unit VARCHAR(15),

SENSOR_3 VARCHAR (15),

Sensor_3_Unit VARCHAR(15),

Time_Stamp TIMESTAMP NOT NULL,

PRIMARY KEY(ID));

回答

1

您需要将%s放入您的SQL语句中。

mycursor.execute("INSERT INTO iot_sensors VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",(Sensor_ID,Location,Sensor_IP,Sensor_1,Sensor_1_Unit,Sensor_2,Sensor_2_Unit,Sens or_3,Sensor_3_Unit)) 

请参阅docs中的示例。

1

看起来像你缺少formatting你的实际变量从插入语句。尝试使用其中一种已知方法格式化它们,%s或.format方法。插入时,您还没有在表格中使用时间戳,最后一列值。如果您只是引用表格,则会出现列不匹配。你将不得不明确你所填充的列是什么。您可以使用CURRENT_TIMESTAMP,因为它对列描述说NOT NULL。

query = ("""Insert into iot_sensors (Sensor_ID, Location, Sensor_IP, Sensor_1, Sensor_1_Unit, Sensor_2, Sensor_2_Unit, Sensor_3, Sensor_3_Unit) values 
        ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}');""".format(Sensor_ID,Location,Sensor_IP,Sensor_1,Sensor_1_Unit,Sensor_2,Sensor_2_Unit,Sensor_3,Sensor_3_Unit)) 
mycursor.execute(query) 

query = ("""Insert into iot_sensors (Sensor_ID, Location, Sensor_IP, Sensor_1, Sensor_1_Unit, Sensor_2, Sensor_2_Unit, Sensor_3, Sensor_3_Unit) values 
    (%s,%s,%s,%s,%s,%s,%s,%s,%s);""" % (Sensor_ID,Location,Sensor_IP,Sensor_1,Sensor_1_Unit,Sensor_2,Sensor_2_Unit,Sensor_3,Sensor_3_Unit)) 
mycursor.execute(query) 
+0

IndexError:元组索引超出范围 –

+0

http://stackoverflow.com/questions/30059972/indexerror-tuple-index-out-of-range-string-formatting – BK435