2016-05-22 14 views
1

私はarduinoに接続し、ser.readline()を使用してセンサーと成功からの読み取りを印刷するセンサーを使用していました。しかし、私が読んでいる値をser.readlineを使ってmysqlに送信したいとき。これはデバイス名と現在の時刻のみを渡し、mysqlに表示される読み値は '0'です。ここで私のコーディング。なぜser.readlineデータがmysqlに表示されないのですか?

import time 
import serial 
import smtplib 
import datetime 
import MySQLdb 

db = MySQLdb.connect("192.168.0.103", "fyp", "123456", "system") 
ser = serial.Serial('/dev/ttyACM0', 9600) 

while True: 
     api = ser.readline() 
     current_time = datetime.datetime.now() 
     print (api) 

     sql = "INSERT INTO reading (series_no, time, api) VALUES ('test1', current_time, api)" 
     data = (current_time, api) 
     cur.execute(sql) 

db.close() 

%sを使用することもできません。前もって感謝します。

答えて

1

クエリを正しくパラメータ化していません。修正するには、いくつかの事柄: - :

  • をクエリパラメータのプレースホルダを追加%s
  • 周りに引用符が​​
  • dataタプルを通過していないが

固定バージョントランザクションをコミット

sql = "INSERT INTO reading (series_no, time, api) VALUES ('test1', %s, %s)" 
data = (current_time, api) 
cur.execute(sql, data) 
db.commit() 
+0

ありがとうございます。しかし、なぜ最初に '警告:1列目の' api '列から切り捨てられたデータ – Hazim

+0

@Hazimは 'api'の値は何ですか、' api'テーブルの列型は何ですか? ?ありがとう。 – alecxe

+0

私のapiの価値は本当にわかりません。しかし、'25、28 'と表示されるので、テーブルの列に整数として扱います。 – Hazim

関連する問題