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

时间:2015-04-17 01:35:57

标签: python sql database mysql-python

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

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

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

cursor = db.cursor()

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

for row in cursor:

    row.replace(",", "")

这不能正常工作。

print row返回('Syntel, Inc. ',) ...元组

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

2 个答案:

答案 0 :(得分:1)

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是一个元组列表。

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

这种方法具有最大的灵活性。

答案 1 :(得分:1)

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

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

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