espeed
espeed

Reputation: 4824

How do you do a datetime based query using SQLite in Python?

import sqlite3
import datetime

today = datetime.date.today()

db_name = "test.db"
db = sqlite3.connect(db_name, detect_types=sqlite3.PARSE_DECLTYPES)
c = db.cursor()
c.execute('create table changes (type string, file_name string, modified timestamp)')
c.execute('insert into changes values(?, ?, ?)', ('M', 'source/test-this.rst', datetime.datetime.now()))
db.commit()
last_run = datetime.datetime(2012, 2, 27, 23, 22, 21, 613477)
c.execute('''select modified from changes where modified > ?''', (last_run))
print c.fetchall()

I'm getting this error...

$ python sqlite.py 
Traceback (most recent call last):
  File "sqlite.py", line 18, in <module>
    c.execute('''select modified from changes where modified > ?''', (last_run))
ValueError: parameters are of unsupported type

Upvotes: 2

Views: 1765

Answers (1)

Eric O. Lebigot
Eric O. Lebigot

Reputation: 94605

Simply use a tuple:

c.execute('''select modified from changes where modified > ?''', (last_run,))

This is a common gotcha…

Upvotes: 4

Related Questions