我创建了一个 python 脚本来创建一个带有一个表的 sqlite3 数据库。该表由两列组成:一列用于 id (int),另一列用于关联的句子(文本)。这是代码:
#!/usr/bin/python
import sqlite3
i=0
con = sqlite3.connect("database.db")
cur = con.cursor()
cur.execute('''CREATE TABLE data(data_id int, sentence text)''')
with open("data.txt", "r") as ins:
for line in ins:
i = i + 1
cur.execute("insert into data(data_id, sentence) values ("+str(i)+",'"+line+"')")
con.commit()
con.close()
如您所见,此代码将读取文件 data.txt,该文件的每一行都包含句子。
当我尝试执行脚本时,出现此错误:
Traceback (most recent call last):
File "scriptData.py", line 13, in <module>
cur.execute("insert into data(data_id, sentence) values ("+str(i)+",'"+line+"')")
sqlite3.OperationalError: near "che": syntax error
这是因为在我的文件 data.txt 中,有些行有 ' 字符,这是一个问题。我试图通过在我的 data.txt 文件中执行\' 来保护这个字符,但它没有用。
问题是我需要在句子中保留 '。我不是 python 程序员,所以我的知识非常有限。你有什么想法让这个脚本起作用吗?
请您参考如下方法:
当你将参数传递给 SQL 查询时,你需要使用转义来防止这种情况:
cur.execute("insert into data(data_id, sentence) values (?, ?)", (i, line))
