(Python)如何编辑SQL数据库中的现有行?
我试图遍历数据库中的每一行,并为每一行编辑一列。该列称为“name”(varchar),它位于company表中 我正在尝试删除逗号,然后在数据库中更新它 到目前为止,我得到的是:(Python)如何编辑SQL数据库中的现有行?,python,sql,database,mysql-python,Python,Sql,Database,Mysql Python,我试图遍历数据库中的每一行,并为每一行编辑一列。该列称为“name”(varchar),它位于company表中 我正在尝试删除逗号,然后在数据库中更新它 到目前为止,我得到的是: cursor = db.cursor() companynames = cursor.execute("SELECT name FROM company;") for row in cursor: row.replace(",", "") 这不能正常工作 打印行返回('Syntel,Inc.)。。。元
cursor = db.cursor()
companynames = cursor.execute("SELECT name FROM company;")
for row in cursor:
row.replace(",", "")
这不能正常工作
打印行
返回('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\u rows
是一个元组列表
在我们完成编辑字段之后,我们可以更新数据库中的部分或所有行,因为我们有主键
这种方法提供了最大的灵活性。Haleemur的答案对于仅使用MySQL的方法是正确的(老实说,这可能是最好的方法,但我不知道您的需要) 就python而言,
row
只是返回数据的元组。由于您选择的唯一列位于第一个位置,因此可以使用索引符号提取该字符串:行[0]
。就你而言:
removedCommas = row[0].replace(",", "")
# Do work with the string removedCommas
您可以将replace函数自身包装多次(
replace(replace(name,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,acme))
但这很快就会变得难看。相反,只需执行多个update语句并提交即可。