Reputation: 640
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?
Upvotes: 0
Views: 878
Reputation: 165586
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)
Upvotes: 1