On Wed, 16 Feb 2011 17:23:00 +0100, Stefano Dal Pra <s.dal...@gmail.com> wrote: > Scusa, mi e' partito un send a vuoto sfiorando la tastiera; non so come sia > successo... > Magari riscrivo meglio appena posso.
No problem. Intanto rispondo a questa mezza domanda... >> Quel che mi chiedo io e': dopo un connect psycopg2 conosce tipi di dato > delle tabelle in cui va ad inserire? > Se cosi' fosse pensare ad un No, non li conosce: psycopg non fa introspezione dei tipi di dati o delle tabelle in connessione. Mi sono spiegato male io nel messaggio di prima. Quando psycopg converte da oggetti python a sintassi sql (adapt), usa il tipo *python*, e solo quello, per decidere quale regola (quale adapter) usare. Il tipo di dato postgres di destinazione non è preso in considerazione. Entrambi i problemi che hai incontrato (adattare Python str a Postgres bytea invece di text, adattare Python int a Postgres bool invece di tipi numerici) derivano da questa informazione incompleta, e dal fatto che questi tipi normalmente vengono mappati non nei tipi che intendevi tu (la mappa degli adapter può essere personalizzata, ma è globale quindi se usi l'adapter bool per convertire gli interi poi non sarai in grado momentaneamente di inserire interi nel database, il che potrebbe essere un problema...) Non è un problema risolvibile a livello di psycopg perché questo è un driver generico: non parsa un'istruzione sql per capire che si tratta di un insert e in quale tabella per quindi andare a vedere i dati di destinazione: inserire dati in una tabella è solo uno dei possibili obiettivi dell'eseguire una query e non sempre il tipo di dato di destinazione è un'informazione facilmente raggiungibile. In casi specifici come il tuo ("insert into <table> values (...)") puoi costruirti uno strumento apposito data la semplicità del compito, ma questa non è una possibilità generale. -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python