2013-05-14 4 views
0

У меня есть этот код в Python 2.4:Sqlite и питон метка времени

import datetime, time, sqlite 
def metodo(date): 
     conn = sqlite.connect('dataBase.db') 
     c = conn.cursor() 
     c.execute("INSERT INTO f values(?,?)", (3,date)) 
     conn.commit() 
     conn.close() 

end_date=datetime.datetime(2012, 10, 21, 0, 0) 
print end_date 

metodo(end_date) 

и SQLite базы данных с междунар и TIMESTAMP

create table f(id int, time TIMESTAMP) 

, но я получить это в Python:

Traceback (most recent call last): 
File "prueba.py", line 13, in ? 
metodo(end_date) 
File "prueba.py", line 6, in metodo 
c.execute("INSERT INTO f values(?,?)", (3,date)) 
File "/usr/lib/python2.4/site-packages/sqlite/main.py", line 255, in execute 
self.rs = self.con.db.execute(SQL % parms) 
TypeError: not all arguments converted during string formatting 

Этот код работает хорошо. Проблема с отметкой времени:

import datetime, time, sqlite 
def metodo(date): 
     conn = sqlite.connect('dataBase.db') 
     c = conn.cursor() 
     c.execute("INSERT INTO a values(%s)", date) 
     conn.commit() 
     conn.close() 


metodo("stringTest") 

и SQLite базы данных с междунар и TIMESTAMP

create table a(test text) 
+0

что произойдет, если вы преобразовать его в UNIX, прежде чем передать его в SqLite? –

+0

По умолчанию модуль 'sqlite' на Python 2.4 отсутствует. Первый фрагмент отлично работает с 'sqlite3' (из stdlib) и Python 2.7. – jfs

ответ

1

Я думаю, что вы должны параметризовать это так:

def metodo(date): 
     conn = sqlite.connect('dataBase.db') 
     c = conn.cursor() 
     c.execute("INSERT INTO a values(%s)", (date,)) 
     conn.commit() 
     conn.close() 
+1

[sqlite3] (http://docs.python.org/2/library/sqlite3.html) использует ''? ''Держатели параметров. – jfs

Смежные вопросы