我是Python的新手。我有一个python代码,我的目标是获取串行输出,然后将输出存储到Microsoft SQL数据库中。
每次学生扫描指纹以参加时,以下串行输出都会出现,这是Arduino串行监视器在屏幕上显示的内容:
{'SID':1,'Date':2018/11/17,'Time':07:11:13}
{'SID':2,'Date':2018/11/17,'Time':07:15:41}
....
....
我想让我的python代码完成这项工作,即获取上面的串行输出并存储到Microsoft SQL数据库中。当学生扫描指纹考勤时,python应该能够获取串行输出并将其每次存储到MSSQL中。我是这样的:
import pyodbc
import serial
import time
import datetime
import ast
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=DESKTOP-H7KQUT1;"
"Database=SAOS1;"
"Trusted_Connection=yes;")
cursor = cnxn.cursor()
now = datetime.datetime.now()
arduino = serial.Serial('COM4', 9600, timeout=.1)
while True:
data = arduino.readline()[:-2].decode("utf-8")
if data!="":
SID = ast.literal_eval(data)['SID']
Atd_Date = ast.literal_eval(data)['Date']
Atd_InTime = ast.literal_eval(data)['Time']
print ('Inserting a new row into table')
tsql = "INSERT INTO attendance (Atd_Date, Atd_InTime, SID) VALUES (?,?,?);"
with cursor.execute(tsql,Atd_Date,Atd_InTime,SID):
print ('Successfuly Inserted!')
但是,我没有做到。上面的python代码无法正常工作。我也收到了这个错误:
与cursor.execute(tsql,Atd_Date,Atd_InTime,SID): NameError:名称'Atd_Date'未定义
答案 0 :(得分:0)
您需要将autocommit设置为true,或者在执行游标之后提交更改...