我有一个数据库,该数据库在不正确的导入中的特定列中包含一些有问题的字符,我想用适当的字符替换它们。
例如,我要替换"
与"
在那里以往任何时候都在列中输入字符串中发现English
,表格数据的。
我使用以下代码无济于事:
conn = sqlite3.connect('Solutions.db')
c = conn.cursor()
sql = """SELECT English, replace(English,'"','"') FROM Data"""
c.execute(sql)
records = c.fetchall()
print("Total rows are: ", len(records))
print("Printing each row")
for row in records:
print(row[0])
print("\n")
conn.commit()
我在调试器中注意到该sql =
行的翻译如下:
sql = SELECT English, replace(English,\ `'"` \',\'"\') FROM Data
它\
摆在每个人的前面'
,我不知道这是否是正常行为。无论哪种方式,我都不会替换字符,但是如果直接在sqlite3中直接运行相同的命令,则所做的更改就可以了。
我正在使用Python 3.7.5
提前致谢。
这里的问题是您正在打印第一列,English
而替换实际上是在结果集的第二列中进行的。
如果更新以下行以查找索引1而不是0,则将获得正确的结果。
...
for row in records:
print(row[1]) # print the second column defined by your replace function.
print("\n")
...
但是,它仍然不会更新数据库中的实际数据,因为它SELECT
仅查询数据并REPLACE
在查询的数据副本上执行。要更新数据库中的数据,您需要UPDATE
在数据库列上执行操作。
UPDATE
Data
SET
English = REPLACE(English,'"','"');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句