Как обновить целочисленное значение в записи SQL? - PullRequest
0 голосов
/ 28 сентября 2018

Я довольно плохо знаком с SQL и модулем Sqlite3 и хочу произвольно редактировать временные метки всех записей в моей БД.

import sqlite3
from time import time
import random

conn = sqlite3.connect('database.db')
c = sqlite3.Cursor(conn)

ts_new = round(time())
ts_old = 1537828957
difference = ts_new - ts_old

for i in range(1,309):

    #getting a new, random timestamp
    new_ts = ts_old + random.randint(0, difference)

    t = (new_ts, i)
    c.executemany("UPDATE questions SET timestamp = (?) WHERE rowid = (?)", t)

#conn.commit()

При запуске я получаю ValueError: parameters are of unsupported type.

Чтобы изначально добавить значение timestamp, я установил t для кортежа и текущую метку времени UNIX в качестве первого значения для него, например (1537828957, ).Эта ошибка отображается, потому что я использовал два (?) в отличие от одного, который я использовал в операторе, чтобы добавить метки времени для начала?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы используете executemany вместо execute.executemany берет итератор кортежей и выполняет запрос для каждого кортежа.

Вместо этого вы хотите использовать execute, он выполняет запрос один раз, используя ваш tuple.

c.execute('UPDATE questions SET timestamp = (?) where rowid = (?)', t)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...