Python:单引号出现在我的数据库中

时间:2013-05-03 19:12:08

标签: python database mysql string regex

我正在做一些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")

2 个答案:

答案 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调用时,我的数据库中没有单引号。

复古,显而易见。