Psycopg2 date problems: "Can't adapt"

Steve Holden steve at holdenweb.com
Fri Oct 21 11:15:18 EDT 2005


bonono at gmail.com wrote:
> Steve Holden wrote:
> 
>>I'm trying to copy data from an Access database to PostgreSQL, as the
>>latter now appears to work well in the Windows environment. However I'm
>>having trouble with date columns.
>>
>>The PostgreSQL table receiving the data has the following definition:
>>
>>CREATE TABLE Lines (
>>   LinID SERIAL PRIMARY KEY,
>>   LinDate   TIMESTAMP(0),
>>   LinQty    INTEGER,
>>   LinPrdID  INTEGER ,
>>   LinPrice  NUMERIC(8,2),
>>   LinInvoice INTEGER)
>>
>>Here's the problem in a nutshell:
>>
>> >>> d
>><DateTime object for '2003-10-02 00:00:00.00' at af9be0>
>> >>> ocurs.execute("DELETE FROMI Lines")
>> >>> osql
>>'INSERT INTO Lines(LinID, LinDate, LinQty, LinPrdID, LinPrice,
>>LinInvoice) VALUES(%s, %s, %s, %s, %s, %s)'
>> >>> ocurs.execute(osql, (1, d, 1, 1, 12500.0, 88))
>>Traceback (most recent call last):
>>   File "<string>", line 1, in <string>
>>psycopg.ProgrammingError: can't adapt
>> >>> ocurs.execute(osql, (1, None, 1, 1, 12500.0, 88))
>> >>>
>>
>>Since the date value's the only difference between the two, I deduce
>>it's causing the problem.
>>
[...]
>>
 > Is "None" a valid value for SQL ? Or should it be NULL ? May be it is
 > because your input is NULL which is being converted to None in python
 > but haven't been converted back to NULL on its way out.
 >
Python's None is the way you communicate null values through the query 
parameterisation mechanism. You will observe that the statement with the 
None value for the date field runs fine, and the error occurs when I 
provide an actual date object.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC                     www.holdenweb.com
PyCon TX 2006                  www.python.org/pycon/




More information about the Python-list mailing list