我试图在我的raspberry pi上运行一个python脚本,以便将从gps接收器接收到的数据存储到sql表中。当我执行这个脚本时,我在代码的这一部分得到了一个错误:
sql = "INSERT INTO gps (n_lat, w_long, date_time) VALUES (%s, %s, %s)" % (north, west, t,)
print sql
cur.execute(sql)
print "Rows inserted: %s" % cur.rowcount
con.commit()
time.sleep(0.5)
错误:
^{pr2}$我真的不明白问题出在哪里,你知道为什么会出现这种错误吗?在
您在引号内设置值的SQL语句中的错误:
您没有转义输入值。日期数字可能不是可选的,但这个数字不是时间。在
但是,您应该始终对数据库的输入值进行转义。这里的关键字是准备语句。与其用pythons
%
运算符将输入参数解析为字符串,不如使用cursor.execute
的参数列表。在现在函数
^{pr2}$execute
将确保所有特殊字符都被转义。E、 g.你的一个输入值可能包含一个单引号或类似的。使用python的字符串解析,会产生如下结果:在最好的情况下,这将导致数据库错误,在最坏的情况下,有人可以用自己的SQL语句(所谓的SQL injection)操作数据库。在
相关问题 更多 >
编程相关推荐