python操作mysql时,sql语句中的变量处理问题。

kingpop001 2011-09-10 05:00:50
使用mysqldb来连接mysql,执行某sql语句,其中含有变量,如下,为何会报出错误?
value = [1,'aa']
table = "table1"
sql = "insert into "+table+" values(%s,%s)"
cursor.excute(sql,value)

或者如下:
value = ['table1',1,'aa']
cursor.excute("insert into %s values(%s,%s)",value)
也报出错误。

请问像这种变量形式应该怎么处理?
...全文
1745 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tottyandbaty 2011-09-19
  • 打赏
  • 举报
回复


cursor.excute("insert into %s values(%%s,%%s)",value)

这样试试?
notax 2011-09-17
  • 打赏
  • 举报
回复
value不是关键字
sql里的values是关键字
用values(%s,%s) 而不是values(%d,%s)

比如 MySQLdb
MySQLdb will convert it to a SQL literal value
http://mysql-python.sourceforge.net/MySQLdb.html

iambic 2011-09-17
  • 打赏
  • 举报
回复
一楼的回复有问题。楼主还是贴下错误信息吧。
wyjq395 2011-09-15
  • 打赏
  • 举报
回复
同时value不知道是不是什么关键字
wyjq395 2011-09-15
  • 打赏
  • 举报
回复
python的DB-API中paramstyle大概有7种
mysql使用的是format格式,和使用sprintf差不多。
楼主的第一种写法基本上是对的,只是为何使用 values(%s,%s),而不是 values(%d,%s)?
如果是拼凑sql语句,还不如2楼这样做。

value = [1,'aa']
cursor.excute("insert into table1 values(%d,%s)",value)
宁无竹 2011-09-15
  • 打赏
  • 举报
回复
value = (1,'aa')
table = "table1"
sql = "insert into "+table+" values(%s,'%s')"%value
cursor.excute(sql)

iambic 2011-09-10
  • 打赏
  • 举报
回复
不要拼凑sql。看下python文档11.13. sqlite3,前三页里,找下正确的方式是什么。
为了让你能自己阅读文档,我就不明说了。

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧