0

我正在做一些 python 编程,将数据插入到项目的 MYSQL 数据库中。我一直在做编码,但注意到一个奇怪的工件;每当我插入字符串数据时,我的数据库都会在我插入的字符串的任一侧包含单引号 (')。

代码如下所示,“数据”是我正在搜索的大字符串:

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])删除它们,因为它们实际上并不存在于变量中。

有什么想法吗?

添加:'base_insert' 是一个简单的 SQL INSERT 语句,可将值放入表中。看起来有点像这样:

Insert Into Strings_Output_tbl (Offset, Strings_out)
Values ("%s","%s")
4

2 回答 2

0

您是否尝试过为 .execute 提供字符串参数?

c_cursor.execute(base_insert,(temp_array[0], temp_array[1]), s)

此外,您应该查看数据库查询指南:尽量避免使用 Python 的内置字符串函数,因为它们可能会打开您的代码以进行注入。

于 2013-05-03T19:32:48.910 回答
0

好的。我想到了。

在 base_insert SQL 中有双引号是什么搞砸了。.execute 添加单引号作为其进程的一部分。所以,有双引号把一切都搞砸了。更好的base_insert:

Insert Into Strings_Output_tbl (Offset, Strings_out)
Values (%s,%s)

现在,当使用 .execute 调用时,我的数据库中没有单引号。

复古,显而易见。

于 2013-05-03T19:59:52.797 回答