试图了解如何获得某人所能做到的一切 输入(进入我的gui),进入我的数据库,我的搜索导致了很多信息 - 等;
“不要这样或那样 - 总是使用预备语句”
导致了; “Mysql使用wannabe准备好的语句,称为参数化语句”
所以我搜索了一下,但这些例子似乎就是我正在做的事情,即%s的东西。
我发现一条建议似乎是使用带有常规.format的花括号 字符串格式直接在mysql执行。 < -is这个好吗?
我发现了一个建议(许多人认为反对)使用re.sub。 < -i怀疑没有,但我把大部分股票放在SO的答案中
我发现建议使用“'%s'”代替'%s'< -tried this,它确实允许引号,但不允许反斜杠
允许插入任何可输入字符还需要什么。 反斜杠和引号是我所知道的,但我需要涵盖所有像@#$!〜%+(& ^。
参数化语句是否还有更多基本上意味着“根据您的需求自行处理应用程序代码”?即使是强烈的暗示,我也会感激不尽,我只是在圈子里读了18个小时。我需要一些方向。
cursor.execute ("""
INSERT INTO dailylog
(emp, content, entrytime, shift, shiftday, containingweek)
VALUES ('%s', '%s', '%s', '%s', '%s', '%s')
""" % (emp, content1, entrytime, shift, shiftday, containingweek,));
cnx.commit()
cnx.close()
答案 0 :(得分:1)
用%
替换(emp
(,
之前的那个)。这就是它的工作方式。否则,你要求Python进行正常的字符串渲染。
另外,删除'
周围的单引号。这是MySQL的转义代码,如果需要的话应该放在它们上面。
因此,具体而言,您的代码应如下所示:
cursor.execute ("""
INSERT INTO dailylog
(emp, content, entrytime, shift, shiftday, containingweek)
VALUES (%s, %s, %s, %s, %s, %s)
""", (emp, content1, entrytime, shift, shiftday, containingweek))
PS:请注意,我在,
之后删除了containingweek
。出于语法原因,你需要在单元素元组中使用额外的逗号,但是这个元组包含多个元素......