I’m pretty new to SQL and the Sqlite3 module and I want to edit the timestamps of all the records in my DB randomly.
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()
When run, I get a ValueError: parameters are of unsupported type
.
To add the timestamp
value originally I set t
to a tuple and the current UNIX timestamp as the first value of a it e.g (1537828957, )
. Is this error displaying because I’ve used two (?)
unlike the single one I used in the statement to add the timestamps to begin with?
Advertisement
Answer
You’re using executemany
instead of execute
. executemany
takes an iterator of tuples and executes the query for each tuple.
You want to use execute
instead, it executes the query once using your tuple
.
c.execute('UPDATE questions SET timestamp = (?) where rowid = (?)', t)