Python:单引号显示在我的数据库



我正在做一些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调用时,在我的数据库中没有单引号。