2012-08-22 19 views
3

我用我的Python脚本在Sqlite数据库中输入数据类型字符串的变量。所以无论何时插入该值,我都会收到Sqlite错误:Python:从字符串变量转义单引号和双引号的一些特殊方法

sqlite3.OperationalError: near "s": syntax error 

我的变量string是这样的:

file_path=r'James Bond 007 - 07 - On Her Majesty's Secret Service (1969)' 

其实我直接从os.walk得到这个文件名,所以我不能通过把反斜杠manually.I需要一些字符串的方法逃脱单串自动e扫描字符串内的内容。

回答

10

你做错了。

cursor.execute("INSERT ... (?, ?, ?)", (var1, var2, var3)) 
+0

我已经写了我的疑问正是这样,你甲肝提及,但这个错误是因为该变量。其中内转义报价存在的我没有找到任何方式来逃避它。 –

+1

+1:为什么人们仍然在没有占位符的情况下进行原始查询构建? –

+0

@FlorianBrucker:容易,因为可以读取和理解含有SQL语句的文件,并且可以包含注释。这对于二进制SQLite3数据库来说有点难度。并且使用'sqlite3'命令行实用程序的'.dump'命令的效果也会去除任何注释。为什么人们将*源代码*检入他们的版本控制系统而不是二进制文件?对我来说同样的道理。 – 0xC0000022L

1

使用正斜杠似乎适用于我,但我对单引号没有任何问题。

所以:

"\"this seems to work fine.\"" 
相关问题