(Python) 如何编辑 SQL 数据库中的现有行?

(Python) How to edit existing rows in a SQL DB?

我正在尝试遍历数据库中的每一行并为每一行编辑一个列。该列名为 "name"(一个 varchar),它在公司 table.

我正在尝试删除逗号,然后在我的数据库中更新它。

到目前为止我得到的是:

cursor = db.cursor()

companynames = cursor.execute("SELECT name FROM company;")

for row in cursor:

    row.replace(",", "")

这不能正常工作。

print row returns ('Syntel, Inc. ',) ... 一个元组

如何正确检索 varchar 字段然后更新它? `

Mysql 有一个 REPLACE 函数。

最有效的方法是:

cursor.execute("UPDATE company SET name = replace(name, ',', '')")
db.commit()

如果您想将行拉入 python 然后编辑字符串,您可以这样做:

corrected_names = []
for row in cursor.execute('SELECT name FROM company'):
    corrected_names.append(row[0].replace(',', ''))

这会将所有更正的名称放入新列表中。

但是,这种方法仍然可以改进。

corrected_rows = []
for row in cursor.execute('SELECT id, name FROM company'):
    corrected_rows.append((row[0], row[1].replace(',', '')))

这里我们查询主键以及我们感兴趣的字段,然后将编辑的行添加到我们的列表中。所以现在 corrected_rows 是一个元组列表。

根据需要编辑完字段后,我们可以更新数据库中的部分或全部行,因为我们有主键。

这种方式灵活性最大。

Haleemur 的答案是 MySQL 唯一方法的正确答案(老实说,这可能是最好的方法,但我不知道您的需求)。

就您的 python 而言,row 只是返回您的数据元组。由于您选择的唯一列位于第一个位置,因此您可以使用索引符号提取该字符串:row[0]。你的情况:

removedCommas = row[0].replace(",", "")
# Do work with the string removedCommas