gpt4 book ai didi

python - 重复数据被存储到数据库中

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:17 26 4
gpt4 key购买 nike

当我运行脚本时,我在数据库中发现了重复的条目,我想知道我可能做错了什么。

硬件
我有一台仪器通过串行通信连接到我的 Raspberry Pi,地址为 115,200。仪器每秒输出一行数据,我想将这些数据存储到数据库中。每行都以\n 结束。

软件
Python 2.7.3rc2
PySerial
PostgreSQL 9.1
Debian Wheezy

数据库中有一个我创建的名为 wattsup 的表:

CREATE TABLE wattsup (
wattsuplocation text
wattsuptime timestamp
wattsupvalue numeric
);

我的 Python 脚本如下所示:

import serial
import time
import psycopg2

ser = serial.Serial('/dev/ttyUSB0', 115200)
Location = 'A'

conn = psycopg2.connect("dbname='mydb' user='thotchi'")
cur = conn.cursor()

Insert = "INSERT INTO wattsup (wattsuplocation, wattsuptime, wattsupvalue) VALUES (%s, %s, %s)"

while 1:
line = ser.readline()

DataArray = line.split(',') #CSV output

if len(DataArray) != 21:
continue
else:
Time = time.strftime("%Y-%m-%d %H:%M:%S")
Watts = float(DataArray[3]) / 10
cur.execute(Insert, (Location, Time, Watts))
conn.commit()

它通常有效,但我得到一些我不理解的重复数据。当我查询数据库时,我可以找到类似的数据。

A, 2012-11-04 18:00:00, 5.0
A, 2012-11-04 18:00:01, 5.1
A, 2012-11-04 18:00:02, 5.0
A, 2012-11-04 18:00:03, 4.9
A, 2012-11-04 18:00:04, 5.0
A, 2012-11-04 18:00:05, 5.0
A, 2012-11-04 18:00:05, 5.0
A, 2012-11-04 18:00:05, 5.0
A, 2012-11-04 18:00:05, 5.0
A, 2012-11-04 18:00:06, 5.1

请注意,存在重复数据(A,2012-11-04 18:00:05,5.0)。我知道仪器仅在 1 秒输出数据,所以我确定它不是仪器。我尝试更改一些代码,以便每 10 个条目发生一次提交,这似乎改善了情况。

知道会发生什么吗?我被难住了。

谢谢!

最佳答案

一些想法1)您可以在 while 循环中添加一些 wait 语句。现在它正在运行循环并使用所有处理器时间2) 您正在使用串行到 USB 转换器,这些设备有时会缓冲数据。3)板载UART也缓冲数据4) 执行Readline时,取决于用作终止符的字符:Cr、LF或CrLF5) 您可以尝试使用 Read,然后读入您自己的字符串缓冲区并查找第一个终止符。

关于python - 重复数据被存储到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225613/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com