简而言之,我从覆盆子pi上的NRF24传感器获取一些数据然后将它们写入数据库。根据Codacy的说法,我需要避免使用硬编码的sql表达式,但我不知道我的脚本有什么问题。你可以帮我吗?
{{1}}
答案 0 :(得分:0)
基于psycopg文档(http://initd.org/psycopg/docs/usage.html),cursor.execute()可以使用2个参数,SQL语句和将插入的一系列值。以这种方式构造insert语句让psycopg转换为python正确地对DB格式赋值,并提供对SQL注入攻击的保护:
...
log="INSERT INTO LOGS (HUMIDITY,TEMPERATURE,PRESSURE,AIR_QUALITY,READING_TIME,LOG_TIME,BASE_STATION_ID) VALUES (%s, %s, %s, %s, %s, %s, %s);"
vals = values[:4] + [datetime.now(),datetime.now(), 1]
write_to_db(log, vals)
...
def write_to_db(LOG, vals):
try:
con = psycopg2.connect(database='dname', user='uname', password='pass')
con.cursor().execute(LOG, vals)
con.commit()
...