我正在尝试从一个有FTDI芯片的智能仪表读取数据。编写了一个简单的Python串行程序来将命令传递给meter,然后meter返回响应。仪表的数据被转换成浮点数并存储在字典中。在
现在我想将字典存储到DB,这里是将数据放入表中的代码。
import psycopg2
conn = psycopg2.connect(database="smartmeter", user="postgres", password="12345", host="localhost", port="5432")
cur = conn.cursor()
cur.execute('''CREATE TABLE metertable (ID SERIAL PRIMARY KEY NOT NULL,meter TEXT NOT NULL,temperature TEXT NOT NULL,freq TEXT NOT NULL,penergy TEXT NOT NULL,qenergy TEXT NOT NULL,senergy TEXT NOT NULL,cospi TEXT NOT NULL,irms TEXT NOT NULL,ppower TEXT NOT NULL,qpower TEXT NOT NULL,spower TEXT NOT NULL);''')
while 1:
data=dict[]
data={
'time':timestamp,
'meter':m0_data,
'temperature':m1_data,
'freq':m2_data,
'penergy':m3_data,
'qenergy':m6_data,
'senergy':m7_data,
'cospi':m11_data,
'irms':m15_data,
'vrms':m16_data,
'ppower':realpower,
'qpower':reactivepower,
'spower':apparentpower
}
cur.executemany ("""INSERT INTO metertable(time,meter,temperature,freq,penergy,qenergy,senergy,cospi,irms,vrms,ppower,qpower,spower) VALUES (%(time)s, %(meter)s), %(temperature)s), %(freq)s), %(penergy)s), %(qenergy)s), %(senergy)s), %(cospi)s), %(irms)s), %(vrms)s), %(ppower)s) %(qpower)s) %(spower)s)""", data)
我遇到这样的错误
^{pr2}$我向数据库输入数据的方向是否正确?请推荐一些最好的方法。在
谢谢你的帮助。错误出在执行器上。我使用type(variable)来获取变量类型,并在那些表中更改为当前执行. 但当我运行代码时。我在数据库中看不到数据保存。 这是代码
程序将在有限时间内运行,我使用ctrl+Z停止程序。当我检查数据库时,它仍然是空的。我错过了什么?我希望数据在从我的智能仪表读取后立即存储在PSQL数据库中
^{pr2}$您有额外的右括号和缺少逗号:
错误说明:您尝试将一些字段推送到数据库中是字符串字段,但您将推送整数值。
确保数据值与数据库表字段匹配。在
相关问题 更多 >
编程相关推荐