繁体   English   中英

(Python)如何在SQL DB中编辑现有行?

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

我试图遍历数据库中的每一行,并为它们的每一行编辑一个列。 该列称为“名称”(varchar),位于公司表中。

我正在尝试删除逗号,然后在数据库中对其进行更新。

到目前为止,我所拥有的是:

cursor = db.cursor()

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

for row in cursor:

    row.replace(",", "")

这不能正常工作。

print row返回('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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM