python - 值错误 : operation parameter must be str

标签 python sqlite sql-update python-db-api

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

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()

最佳答案

您需要单独传递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)

关于python - 值错误 : operation parameter must be str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807577/

相关文章:

SQL UPDATE,但仅当旧值为空时

r - sqldf更新错误

python - Matplotlib 在渲染为 pdf 时不显示影线

python - 使用 usecols 时 Pandas 保留索引列

python - matplotlib:如何在不改变方面的情况下消除绘图中的浪费空间

python - RabbitMQ 消费者停止接收消息

c# - System.Data.SQLite - 无法访问加密数据库

iphone - 核心数据 VS Sqlite 或 FMDB……?

android - 为Android Sqlite数据库设置密码

mysql - 触发: Referencing updated attribute