2017-03-06 6 views
0

変数としてテーブルにデータを入力しようとしていますが、エラーが発生しているようですmysql.connector.errors.ProgrammingError: SQLステートメントでは、行名の代わりに%sを使用しましたが、同じエラーが発生しているようです。私はそれが私の構文である疑いがあるが、ところで、これは表IoT_Sensors(Mysql Python:MySQLの文ですべてのパラメータが使用されているわけではありません

ID INT NOT NULL AUTO_INCREMENTをCREATE一緒

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 

PythonとMySQLを使用して、私の最初の時間である私は、それを把握するように見えることはできません

Sensor_ID VARCHAR NULL NOT(15)NOT NULL、

場所VARCHAR(20)、

Sensor_IP VARCHAR(15)NULL NOT、

Sensor_1 VARCHAR NULL NOT(15)NOT NULL、

Sensor_1_Unit VARCHAR(15)、

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

SQLステートメントに%sを入れる必要があります。

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あなたの実際の変数がinsertステートメントから不足しているように見えます。既知のメソッド%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

関連する問題