当前位置:  开发笔记 > 编程语言 > 正文

ValueError:操作参数必须为str

如何解决《ValueError:操作参数必须为str》经验,为你挑选了1个好方法。

我正在尝试使用python函数将某些数据库字段更新为SQLite DB。我不断收到以下错误:

ValueError:操作参数必须为str

下面是我的代码。我很想知道如何在sqlite数据库中更新多个列。

def updateEventData():
    ID = input('Enter ID of row you\'d like to update: ')
    eventname = input('\nPlease enter event name: ')
    startdate = input('\nPlease enter event start date: (DD/MM/YYYY): ')
    enddate = input('\nPlease enter event end date: (DD/MM/YYYY): ')
    venue = input('\nPlease enter event venue: ')

    # Sql update
    sql = """
    UPDATE event_details
    SET name, startdate, enddate, venue, (?, ?, ?, ?)
    WHERE ROWID = ?
    """, (eventname, startdate, enddate, venue, ID)
    c.execute(sql)
    conn.commit()

falsetru.. 5

您需要分别传递sql和参数,而不是包含sql和参数的元组:

sql = """
UPDATE event_details
SET name, startdate, enddate, venue, (?, ?, ?, ?)
WHERE ROWID = ?
"""
c.execute(sql, (eventname, startdate, enddate, venue, ID))
#         ^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#     separated argument, not as a single argument
conn.commit()

看到 DB API 2 documentation, Cursor.execute(operation, parameter)



1> falsetru..:

您需要分别传递sql和参数,而不是包含sql和参数的元组:

sql = """
UPDATE event_details
SET name, startdate, enddate, venue, (?, ?, ?, ?)
WHERE ROWID = ?
"""
c.execute(sql, (eventname, startdate, enddate, venue, ID))
#         ^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#     separated argument, not as a single argument
conn.commit()

看到 DB API 2 documentation, Cursor.execute(operation, parameter)

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有