Gra*_*ams 2 python sqlite string
我正在使用在 Raspberry Pi 2 上运行的 onewire 温度传感器开发温度传感器网络。我正在遵循本教程,随着我的进行,我意识到他的设置适用于一个温度传感器,而我的设置需要与多个传感器。
由于拥有多个传感器,我还需要能够区分这些传感器。为此,我希望 SQLite 表中有 3 列。当我执行应该记录传感器读数、日期和时间以及传感器名称的 Python 脚本时,我遇到了错误。
问题是,当我配置 python 脚本以将三个值写入表时,出现错误。

这是我在执行时遇到错误的代码
#!/usr/bin/env python
import sqlite3
import os
import time
import glob
# global variables
speriod=(15*60)-1
dbname='/var/www/templog.db'
# store the temperature in the database
def log_temperature(temp):
conn=sqlite3.connect(dbname)
curs=conn.cursor()
sensor1 = 'Sensor1'
curs.execute("INSERT INTO temps values(datetime('now'), (?,?))" (temp, sensor1))
# commit the changes
conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)
"INSERT INTO temps values(datetime('now'), (?,?))" (temp, sensor1)
Run Code Online (Sandbox Code Playgroud)
分解它,你会发现这创建了一个字符串,然后括号对 Python 来说似乎是一个函数调用。然而,这是无意义的,因为你有一个字符串,你试图像调用函数一样调用它。因此,你会得到关于不可调用的错误str,如果你没有使用 Python 的经验,这肯定有点神秘。本质上你缺少一个逗号:
curs.execute("INSERT INTO temps values(datetime('now'), (?,?))", (temp, sensor1))
Run Code Online (Sandbox Code Playgroud)
现在您将?正确填写占位符。
通常,“str不可调用”错误是由于诸如 this 或重复的变量名之类的拼写错误造成的(您认为您正在调用函数,但该变量实际上包含字符串),因此,当您看到此类型时,首先要查找这些问题的错误。
| 归档时间: |
|
| 查看次数: |
4883 次 |
| 最近记录: |