1

我有一个与 Arduino 板连接的温度传感器([LM35][1]),我的 [sketch][2] 能够将值记录到串行端口,例如/dev/ttyACM0在 Ubuntu 中,我能够安装 pySerial 并记录温度值到文件中...我使用了命令

python -m serial.tools.miniterm /dev/ttyACM0 >> templogger.csv

所以它会记录像

27
28
27

进入 templogger.csv 文件。

我可以将这些值直接记录到 postresql 数据库中,而不是登录到 csv 文件,比如使用用户名“abc”和密码“xyz”的 Db1。是否可以通过python,您能否通过提供所需的脚本来提供帮助

4

2 回答 2

1

从psycopg2开始,它实现了 Python 数据库 API。

您可能希望从简单INSERT的 individual 开始,但稍后您将能够将工作批量处理为事务或用于COPY提高写入性能。

一般来说,最好针对比这更具体的问题发布问题。请参阅堆栈溢出帮助。如果您遇到问题,可以寻求帮助,但最好先尝试解决。如果您的问题更像是:“我尝试使用 psycopg2 将我的 Python 程序连接到 PostgreSQL,这样我就可以将传感器日志记录写入数据库,但是当我INSERT连续出现时,我会得到更好的结果[exact error text here]。搜索错误消息对我没有帮助,所以我有点卡住了。”

换句话说,试试看,如果你遇到困难,问。我通常只会将这样的问题投票为“过于本地化”或“不是一个真正的问题”,这会给你一个指向问题写作指南的自动链接,但你是新来的,你已经做了一个努力写一个像样的问题,所以我试图更详细地解释一下。

于 2013-06-21T07:44:05.380 回答
0

我可以将这些值直接记录到 postresql 数据库中,而不是登录到 csv 文件,比如使用用户名“abc”和密码“xyz”的 Db1。是否可以通过python,您能否通过提供所需的脚本来提供帮助?

好好看看SQLAlchemy 教程,并尝试编写适合您的代码。基本上,您可以从示例中推断:

from serial import Serial
from sqlalchemy import *

class Temperature(object):
    pass

class TemperatureStore:
    def __init__(self, dburl):
        self.db = create_engine('postgresql://%s' % dburl)
        self.db.echo = True
        metadata = BoundMetaData(db)
        temperatures = Table('temperatures', metadata, autoload=True)
        temperaturemapper = mapper(Temperature, temperatures)
        self.session = create_session()

    def push_temperature(self, temp):
        temp = Temperature()
        temp.value = temp
        session.save(temp)

def main():
    ser = Serial(port='/dev/ttyXXX', baudrate=115200)
    tempstore = TemperatureStore('abc:xyz@localhost:5432/Db1')
    while True:
        tempstore.push_temperature(ser.read())

这只是一个可能行也可能行不通的例子(我没有测试它,只是在 5 分钟内写出来),所以你最好从中获得一些灵感,并尝试自己解决!

于 2013-06-21T09:52:15.823 回答