记录从arduino到postgres db的值

时间:2013-06-21 06:24:26

标签: python database postgresql arduino

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

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

所以它会记录像

这样的值
27
28
27

进入templogger.csv文件。

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

2 个答案:

答案 0 :(得分:1)

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

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

一般来说,最好是针对比这更具体的问题发布问题。见Stack Overflow Help。如果你坚持做某事就可以寻求帮助,但最好先试着弄明白。如果您的问题更像是以下情况,您将获得更好的结果:“我尝试使用psycopg2将我的Python程序连接到PostgreSQL,因此我可以将传感器日志记录写入数据库,但是当我INSERT一行时,我得到了[exact error text here]。搜索错误消息对我没有帮助,所以我有点卡住了。“

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

答案 1 :(得分:0)

  

而不是登录csv文件我可以直接将这些值记录到postresql数据库,说Db1用户名' abc'和密码' xyz'。是否有可能通过python,你能提供所需的脚本请求帮助吗?

好好了解SQLAlchemy tutorial,并尝试制作适合您的代码。基本上,您可以从示例中推断:

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分钟内写完),所以你最好从中获得一些灵感,并试着找出自己的灵感!