为什么Python会在字符串中添加特殊字符?

时间:2016-03-13 21:51:40

标签: python sqlite

我有一些python代码连接我所有的sqlite列并生成一个INSERT命令。当我执行insert语句时,我得到了这个:

(<class 'sqlite3.OperationalError'>, OperationalError('near "[\'sdf\',
\'sdf\', \'435\', \'fdsg\', \'434\', \'44\', \'dsf\', \'dfg\', \'0\', \'0\']":
syntax error',), <traceback object at 0x02CDF210>)

*错误不包含新行,它只是一个长字符串。

为了排除故障,我在命令执行之前输出INSERT字符串。当我在sqlite浏览器中运行时,它可以完美运行:

INSERT INTO clients (client_id, firstname, lastname, age, gender, 
phone_number1, phone_number2, email_address, contact_address, total_time, 
total_amt) values ('4','sdf','sdf','435','fdsg','434','44','dsf','dfg','0','0')

我认为这个错误与&#39; \&#39;有关。 ,&#39; [&#39;和&#39;]&#39;所以我通过&#34;擦洗&#34;:

return str(element).translate({ord(i):None for i in "\{}[]!@;:?!.#$"})

但没有任何改变。我该如何解决这个错误?为什么python会添加这些额外的字符?

这是我的python db执行代码和生成值&#39; list&#39;的代码。 执行代码:

formatted_values = admin.format_cols_for_db(cols,'values',client_id,values)
print("INSERT INTO clients {q} values {v}".format(q=query,v=formatted_values))
admin.db.execute("INSERT INTO clients {q} values {v}".format(q=query,v=values))

字符串代码:

values = "('" + client_id + "',"
        while i < len(value_li):    #puts into this format: ('4','first','last','33')
            if i < len(value_li)-1:
                values = values + "'" + scrub(value_li[i]) + "',"  
            else:
                values = values + "'" + scrub(value_li[i]) + "')"
            i = i + 1
        return values

1 个答案:

答案 0 :(得分:0)

我解决了。我应该插入新的格式化字符串(formatted_values)时插入一个列表(值)。花了几个小时才意识到我的打印输出与我的执行块有不同的变量。

应该是:

admin.db.execute("INSERT INTO clients {q} values {v}".format(q=query,v=formatted_values))

新秀错误......