如何用Python替换部分列字符串SQLite3

2024-04-25 09:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据库,在一个特定的列中有一些不正确的导入字符,我想用正确的字符替换它们。你知道吗

例如,我想用"替换",在表数据的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中运行相同的确切命令,那么更改就可以了。你知道吗

我使用的是python3.7.5

提前谢谢。你知道吗


Tags: 数据from数据库sqldataenglishconn字符
2条回答
CREATE TABLE test(English);
INSERT INTO test(English) VALUES
  ("a"b"c"),
  ("d"e"f");
.headers on
SELECT * from test;

.print Updating
UPDATE test SET English = replace(replace(English, """, """"), "&39;", "'");
SELECT * from test;
$ sqlite3 < english.sql
English
a&quot;b&quot;c&39;x&39;
d&quot;e&quot;f
Updating
English
a"b"c'x'
d"e"f

这里的问题是打印的第一列是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,'&quot;','"');

相关问题 更多 >