前提・実現したいこと
pythonでMariaDBに接続しています
シリアル通信で受信したデータから数字だけを抜き出しnumにいれてます
print(num)の結果
['24.01', '1018.90', '27.12', '947']
DB名:sensordata
table名:data
カラム構成?はこうなってます。
MariaDB [sensordata]> describe data; +--------------+----------+------+-----+---------------------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+----------+------+-----+---------------------+-------+ | temp | double | YES | | NULL | | | hum | double | YES | | NULL | | | hum_soil | double | YES | | NULL | | | press | double | YES | | NULL | | | light | double | YES | | NULL | | | reading_time | datetime | NO | | current_timestamp() | | +--------------+----------+------+-----+---------------------+-------+
現在シリアル通信で受信できてる値はtemp,hum,press,lightの部分のみなので、カラム指定しています。
発生している問題・エラーメッセージ
pi@raspberrypi:~/web/cgi-bin $ python3 dat_ret.py File "dat_ret.py", line 19 cursor.executemany("INSERT INTO data (temp, press, hum, light) ^ SyntaxError: EOL while scanning string literal
該当のソースコード
python
1#!/usr/bin/env python3 2 3import serial 4import re 5import MySQLdb 6 7connection = MySQLdb.connect( 8 host='127.0.0.1', 9 port=3306, 10 user='root', 11 passwd='pass', 12 db='sensordata') 13cursor = connection.cursor() 14 15con=serial.Serial('/dev/ttyAMA0', 115200, timeout=30) 16line = con.readline() 17num=re.findall('[0123456789.]+',line.decode('sjis')) 18 19cursor.executemany("INSERT INTO data (temp, press, hum, light) 20 VALUES (%s, %s, %s, %s) 21 ", num) 22connection.commit() 23connection.close()
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/19 00:11
2020/02/19 00:22
2020/02/19 00:51
2020/02/19 01:05