在Python中如何利用变量执行SQL语句
P粉725827686
P粉725827686 2023-08-21 16:40:37
0
2
430
<p>我有以下的Python代码:</p> <pre class="brush:py;toolbar:false;">cursor.execute("INSERT INTO table VALUES var1, var2, var3,") </pre> <p>其中<code>var1</code>是一个整数,<code>var2</code>和<code>var3</code>是字符串。</p> <p>我该如何在不让Python将它们作为查询文本的一部分的情况下写入变量名?</p>
P粉725827686
P粉725827686

全部回复(2)
P粉781235689

不同的Python DB-API实现允许使用不同的占位符,所以你需要找出你正在使用的是哪种占位符 -- 例如(使用MySQLdb):

cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

或者(使用Python标准库中的sqlite3):

cursor.execute("INSERT INTO table VALUES (?, ?, ?)", (var1, var2, var3))

或者其他方式(在VALUES之后,你可以使用(:1, :2, :3),或者使用"named styles" (:fee, :fie, :fo) 或者 (%(fee)s, %(fie)s, %(fo)s),在这种情况下,你需要将一个字典作为第二个参数传递给execute函数)。检查你正在使用的DB API模块中的paramstyle字符串常量,并查看http://www.python.org/dev/peps/pep-0249/上的paramstyle,了解所有的参数传递方式!

P粉763662390
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))

请注意参数是作为一个元组传递的,(a, b, c)。如果您只传递一个参数,元组需要以逗号结尾,(a,)

数据库API会对变量进行适当的转义和引用。请注意不要使用字符串格式化运算符(%),因为

  1. 它不会进行任何转义或引用。
  2. 它容易受到无法控制的字符串格式攻击,例如SQL注入
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!