赞
踩
# 发生错误代码,使用pymysql
dt = [{'name': "i'am i'll fine", 'age': 13}, {'name': 'you"are welcome"', 'age': 12}]
sql = """insert into test.users (name,age) values('%s',%s)""" % (i['name'],i['age'])
db.execute(sql) # 1064错误
解决办法有几种,可解决大部分问题
# 使用escape_string,转换含有单双引号的值
dt = [{'name': "i'am i'll fine", 'age': 13}, {'name': 'you"are welcome"', 'age': 12}]
sql = """insert into test.users (name,age) values('%s',%s)""" % (pymysql.escape_string(i['name']),i['age'])
db.execute(sql) # 通过
# 同理的办法,双引号不用管
i['name'].replace("'","\\'")
而自己用的环境是web2py这个框架中,pymysql被封装在DAL中,以上方法并不能解决问题,搜索博文,尝试可以这样解决
# 使用以下语法可以解决
dt = [{'name': "i'am i'll fine", 'age': 13}, {'name': 'you"are welcome"', 'age': 12}]
for i in dt:
sql = "INSERT INTO {0} SET {1}"\
.format('users',','.join(['{0}={1!r}'.format(k, str(v)) for (k, v) in i.items()]))
db.executesql(sql)
详细可以参考原文:原博文
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。