我正在尝试遍历数据库中的每一行,并为每个行编辑一个列。该列称为“名称”(varchar),它位于公司表中。
我正在尝试删除逗号,然后在我的数据库中更新它。
到目前为止,我所拥有的是:
cursor = db.cursor()
companynames = cursor.execute("SELECT name FROM company;")
for row in cursor:
row.replace(",", "")
这不能正常工作。
print row
返回('Syntel, Inc. ',)
...元组
如何正确检索varchar字段然后更新它? `
答案 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