今天在使用python编写数据处理的时候,碰到数据中带有转义字符的时候,插入数据错误(数据是通过format拼接的,因此从数据库读取的字符串中的转移字符不能处理)

后来查阅资料,MysqlDB中的execute 可以将数据参数绑定到sql参数列表中(其实之前封装好的mysqlor.py中有该接口实现,只是从来没用过。。。今天才发现该接口的用处)

具体方法如下

1
2
3
params = [1, 2, 3]
insert_sql = 'INSERT INTO {tb} VALUES(%s, %s, %s)'.format(tb=table_name)
mysql_execute(cur, insert_sql, params) # params为user对应的字段

其中 mysql_execute 函数实现如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def mysql_execute(cursor, sql, param=None, debug=False):
u'''
执行 SQL 语句
'''

if cursor:
try:
if param in [None, "", '']:
return cursor.execute(sql)
else:
if isinstance(param, (list, tuple)): param = param
if debug: print "cursor.execute(sql, param) parameter, sql: {s}, param: {p}".format(s=sql, p=param)
return cursor.execute(sql, param)
except IndexError:
#except:
if debug: print "cursor.execute(sql, param) error, sql: {s}, param: {p}".format(s=sql, p=param)
return None
else:
if debug: print "mysql_execute parameter cursor is error."
return None

留言

Dec 3 2015