Получить вывод последовательного порта в Python - PullRequest
0 голосов
/ 18 ноября 2018

Я новичок в Питоне. У меня есть код 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. Когда студенты сканируют отпечаток пальца, чтобы принять участие, питон должен иметь возможность получать последовательный вывод и сохранять его в 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' не определено

1 Ответ

0 голосов
/ 22 марта 2019

Вам нужно либо установить для autocommit значение true, либо зафиксировать изменение после выполнения курсора ...

...