Python 将函数值插入SQLite数据库

Python 将函数值插入SQLite数据库,python,database,sqlite,proximitysensor,Python,Database,Sqlite,Proximitysensor,嘿,伙计们 我和我的一个朋友正在做一个我们想实现的小项目。到目前为止,我们已经建立了一个小型传感器,可以识别车库中的汽车,与Arduino Nano一起运行超声波传感器。然后,传感器通过Xbee将一个整数(1=车,0=无车)传输到客厅中运行Python的RaspberryPi 我们还可以使用以下代码在屏幕上看到数据,给出行或0或1: import serial while True: ser = serial.Serial(“/dev/ttyAMA0”, 9600, timeout=1

嘿,伙计们

我和我的一个朋友正在做一个我们想实现的小项目。到目前为止,我们已经建立了一个小型传感器,可以识别车库中的汽车,与Arduino Nano一起运行超声波传感器。然后,传感器通过Xbee将一个整数(1=车,0=无车)传输到客厅中运行Python的RaspberryPi

我们还可以使用以下代码在屏幕上看到数据,给出行或0或1:

import serial

while True:
    ser = serial.Serial(“/dev/ttyAMA0”, 9600, timeout=1)
    response = ser.read()
    print response
在研究了一些Python和SQLite3代码之后,我们决定,如果我们能够看到一辆汽车何时到达我们的车库并离开,那将非常酷。 所以我做了一些研究,发现这可以通过使用MySQL或SQLite数据库来实现

我们尝试了一下,看了很多教程,现在我们已经能够创建表并将数据插入其中。不幸的是,到目前为止,这些数据是由我们手工编写的,并没有通过函数动态插入到表中

我们关于数据库的代码如下所示:

import sqlite3
import time
import datetime
import serial

def Main():

    try:

        con = sqlite3.connect(‘test.db’)
        cur = con.curson()
        cur.execute(‘CREATE TABLE Cars(Id INT, Time TEXT, Status INT)’)
        cur.execute(“INSERT INTO Cars VALUES(1, datettime(), 1)”)
        cur.execute(“INSERT INTO Cars VALUES(2, datettime(), Reading())”)

        con.commit()

        cur.execute(“SELECT * FROM Cars”)

        data = cur.fetchall()

        for row in data
            print row

    except sqlite3.Error, e:
        if con:
            con.rollback()
            print “There’s a problem with your SQLite”

    finally:
        if con:
            con.close()


def Reading():

    ser = serial.Serial(“/dev/ttyAMA0”, 9600, timeout=1)
    response = ser.read()
    return response

if __name__ == ‘__main__’:
    Main()
简而言之:我们表格的每一行都应该显示一个单独的Id、当前时间和1或0,这取决于车库中传感器前面是否有车。 当我们尝试运行这段代码时,我们总是会收到一条消息“您的SQL有问题”


也许你们当中有人知道我们到目前为止做错了什么,或者我们如何能够实现函数Reading()的值到表中。即使没有,您也可能对如何可视化数据有另一种想法。

您希望将函数的结果值插入到数据库中。SQLite无法理解函数本身。你应该改为:

    cur.execute('INSERT INTO Cars VALUES(1, ?, 1)',
                (datetime.now().strftime('%Y%m%d%H%M%S'),))
    cur.execute('INSERT INTO Cars VALUES(2, ?, ?)',
                (datetime.now().strftime('%Y%m%d%H%M%S'),Reading()))
如果要存储Python日期时间而不是文本值,则可以使用适配器,如下所述: