Skip to content
Advertisement

How to update an integer value in an SQL record?

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)
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement