我正在做一些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")
答案 0 :(得分:0)
您是否尝试过使用字符串参数提供.execute?
c_cursor.execute(base_insert,(temp_array[0], temp_array[1]), s)
此外,您应该查看guidelines数据库查询:尽量避免使用Python的内置字符串函数,因为它们可能会打开您的代码进行注入。
答案 1 :(得分:0)
行。我想到了。
在base_insert中使用双引号SQL就是搞砸了。 .execute添加单引号作为其进程的一部分。因此,使用双引号会搞乱一切。更好的base_insert:
Insert Into Strings_Output_tbl (Offset, Strings_out)
Values (%s,%s)
现在,当使用.execute调用时,我的数据库中没有单引号。
复古,显而易见。