如何用Python替换String SQLite3列的一部分

Codeburn

我有一个数据库,该数据库在不正确的导入中的特定列中包含一些有问题的字符,我想用适当的字符替换它们。

例如,我要替换""在那里以往任何时候都在列中输入字符串中发现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

提前致谢。

Zeeshan

这里的问题是您正在打印第一列,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章