nit*_*itr 2 python string execute mysql-python
c.execute("UPDATE Players SET %s = %d WHERE nick=%s",
(parts[1], int(parts[2]), parts[0]))
Run Code Online (Sandbox Code Playgroud)
给了我错误
TypeError: %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)
我知道execute应该只采取%s,但parts[2]应该转换为int,因为它将是一个int(作为字符串输入).
所以,如果我只放了%s,当然它会出现这个错误:
mysql_exceptions.ProgrammingError: (1064,
"You have an error in your SQL syntax; "
"check the manual that corresponds to your MySQL server version "
"for the right syntax to use near "
"''wins' = '450' WHERE nick='xan'' at line 1")
Run Code Online (Sandbox Code Playgroud)
因为wins是整数.这是什么解决方案?
ber*_*nie 10
我看到了几个问题.
可能会有更多.
您不能参数化表格或列名称.但是,您可以执行字符串替换然后调用.execute().
如果您的程序需要用户输入,那么您将需要警惕SQL注入攻击的可能性.
%s无论参数的类型如何,始终使用.
MySQLdb处理任何需要完成的引用.
例:
sql_stmt = "UPDATE Players SET {} = %s WHERE nick=%s;".format(parts[1])
c.execute(sql_stmt, (int(parts[2]), parts[0]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |