python sql语句参数化执行sql插入语句,为什么这样会报错?

Python 在使用MySQLdb执行语句时,格式化SQL语句中字符串的问题 - 开源中国社区
当前访客身份:游客 [
当前位置:
在Python使用MySQLdb的executemany一次插入多行
#下面的table_name为传进来的表名
#insert_values为插入的值列表
cur.executemany(&insert into %s values (%s,%s,%s)& %(table_name),insert_values)
但是这个语句有一个问题,会报错:提示格式化字符串时值不足,因为只提供了table_name,python把values后面的三个占位%s也考虑进来了,
请问有什么办法绕过这个问题?
共有1个答案
<span class="a_vote_num" id="a_vote_num_
答案:cur.executemany(&insert into %s values (%%s,%%s,%%s)& %(table_name),insert_values)
更多开发者职位上
有什么技术问题吗?
Lujinke...的其它问题
类似的话题> 急 python安插不了中文 直接在sql语句中写中文可以插入 变量变成中文就插入不了了
急 python安插不了中文 直接在sql语句中写中文可以插入 变量变成中文就插入不了了
shuishangwuhen & &
发布时间: & &
浏览:2 & &
回复:1 & &
悬赏:0.0希赛币
急急急 python插入不了中文 直接在sql语句中写中文可以插入 变量变成中文就插入不了了a&=&cur.executemany(sql_insert.encode('utf8'),(names,times,size,username))
b&=&cur.rowcount
db.commit()
names=10.5.13.66上的aushelp2(Z).lnk
Traceback&(most&recent&call&last):
&&File&"E:\Symantec\monitoring_user_file.py",&line&55,&in&&module&
&&&&a&=&cur.execute(sql_insert.encode('utf-8'),(names,times,size,username))
&&File&"C:\Python27\lib\site-packages\MySQLdb\cursors.py",&line&202,&in&execute
&&&&self.errorhandler(self,&exc,&value)
&&File&"C:\Python27\lib\site-packages\MySQLdb\connections.py",&line&36,&in&defaulterrorhandler
&&&&raise&errorclass,&errorvalue
OperationalError:&(1366,&"Incorrect&string&value:&'\\xC9\\xCF\\xB5\\xC4au...'&for&column&'file_name'&at&row&1")
a&=&cur.executemany(sql_insert.encode('utf8'),('中文测试',times,size,username))
b&=&cur.rowcount
db.commit()
为什么变量是中文插入不行而直接给中文就可以呢
&&&&&&&&&&&&&&&&
  cur.executemany(sql_insert,(names.encode('utf-8'),times,size,username))shuishen1988ah & &
23:57:42 & &
& & (0)(0)引用
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&用Python解释SQL话语执行过程
&来源:读书人网&【读书人网():综合教育门户网站】
用Python解释SQL语句执行过程SQL 语句看上去挺酷,但在数据库内部,它是如何被解释执行的呢?本文试图用最小
用Python解释SQL语句执行过程SQL 语句看上去挺酷,但在内部,它是如何被解释执行的呢?本文试图用最小的篇幅,解释这个问题.作者水平有限,内容难免有失偏颇,望请海涵.首先,一张学生表:《Inside Microsoft SQL Server 2005:T-SQL Programminy》抱歉,推荐一本SQL Server的书籍。只看第一章就好。源代码:姓名,年龄,班级 = range(3)张三 = ('张三', 18, '一班')李四 = ('李四', 19, '一班')王五 = ('王五', 19, '软件二班')学生 = {张三, 李四, 王五}姓名,学科, 分数 = range(3)成绩1 = ('张三', '数学', 60)成绩2 = ('张三', 'C语言', 70)成绩3 = ('李四', '数学', 61)成绩4 = ('王五', '数学', 62)成绩5 = ('王五', 'C语言', 63)成绩 = {成绩1, 成绩2, 成绩3, 成绩4, 成绩5}# select& 姓名, 年龄, 班级 from 学生 where 姓名 = '张三'for x in 学生:&&& if(x[姓名] == '张三'):&&&&&&& print(x)&&&&&& &结果 = [ s for s in 学生 if& s[姓名] == '张三']print(&简单查询结果:&,结果)#select 学生.姓名, 成绩.学科, 成绩.分数 from 学生 left join 成绩 on 学生.姓名 = 成绩.姓名 where 学生.姓名 = '张三'#step one,对两个表做笛卡尔积笛卡尔积 = { (x,y) for x in 学生 for y in 成绩}print(&笛卡尔积结果:&,sorted(笛卡尔积))#为了显示美观,特意加了一个排序学生表,成绩表 = range(2)#step two,增加过滤条件最终结果= { (x[学生表][姓名], x[成绩表][学科], x[成绩表][分数]) for x in 笛卡尔积 if x[学生表][姓名] == x[成绩表][姓名] and x[学生表][姓名] == '张三'}print('结果:', 最终结果)在shell脚本执行sql语句为什么会报错_百度知道Python&SQL语句问题&,模糊查询
由于在python中,使用%s来作为SQL语句的占位符,所以在我们执行的SQL语句中,带有一些%时应该如何处理呢?
比如下面两个例子:
1、select * from tbl_test where col like '%TR%';
2、select * from tbl_test where date_format(created_time,
'%Y-%m-%d') ='';
以上SQL语句会抛以下异常:
ValueError: unsupported format character 'T' ...
ValueError: unsupported format character 'Y'....
那我们需要按以下方法来解决:
<span STYLE="CoLor: #、select * from tbl_test where col like
' %%TR %% ';
2、select * from tbl_test where date_format(created_time,
'%% Y-%% m-%%
用两个%来转义。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 python 语句执行时间 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信