Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Python)如何编辑SQL数据库中的现有行?_Python_Sql_Database_Mysql Python - Fatal编程技术网

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

(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.)。。。元

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

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

到目前为止,我得到的是:

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语句并提交即可。