我正在做一些python编程,为一个项目将数据插入MYSQL数据库。我一直在编码,但注意到一个奇怪的工件;每当我插入字符串数据时,我的数据库都会在我插入的字符串的两侧包含单引号(')。
代码看起来像这样,'data'是一个大字符串,我正在搜索:
chars = r" -~"
shortest_run = 10
regexp = '[%s]{%d,}' % (chars, shortest_run)
pattern = re.compile(regexp)
for current in pattern.finditer(data):
temp_array = (current.start(), current.group(0))
c_cursor.execute(base_insert,(temp_array[0], temp_array[1]))
插入后,数据库的值如下所示:
'Thisisthestring'
当它应该是:
Thisisthestring
单引号不应该在那里,但是它们在那里。我不能用python语句(如string[1:-1])删除它们,因为它们实际上不存在于变量中。
任何想法吗?
ADD: 'base_insert'是一个简单的SQL INSERT语句,将值放入表中。看起来有点像这样:
Insert Into Strings_Output_tbl (Offset, Strings_out)
Values ("%s","%s")
您是否尝试使用字符串参数提供.execute ?
c_cursor.execute(base_insert,(temp_array[0], temp_array[1]), s)
另外,你应该看一下数据库查询的指导方针:尽量避免Python的内置字符串函数,因为它们可能会打开你的代码以进行注入。
OK。我想明白了。
在base_insert SQL中使用双引号是搞砸它的原因。.execute添加单引号作为其过程的一部分。所以,这里的双引号会把一切都搞砸。更好的base_insert:
Insert Into Strings_Output_tbl (Offset, Strings_out)
Values (%s,%s)
现在,当使用。execute调用时,在我的数据库中没有单引号。