J'ai rencontré un problème avec PostGreSQL 8.4 et la réflexion des tables. Mon objet de métadonnées semble correct (il contient des clés étrangères, des clés primaires, toutes les colonnes et tables). Mais quand j'essaie d'associer un objet à un autre via une clé étrangère, je reçois: "sqlalchemy.exc.ProgrammingError: (ProgrammingError) ne peut pas adapter le type 'EventParameters' 'INSERT INTO event (".Erreur "Impossible d'adapter le type" sur un attribut de clé étrangère avec SQLAlchemy/PostGreSQL
I « utilise SQLAlchemy 0.6.3 (psycopg2 2.2.1) et PostGreSQL 8.4.5
ici, mon code:
#! /usr/bin/env python
from sqlalchemy import MetaData, create_engine
from sqlalchemy.orm import mapper, sessionmaker
class EventParameters(object):
pass
class Event(object):
pass
engine = create_engine('postgresql://postgres:[email protected]:5432/renass')
metadata = MetaData()
metadata.reflect(bind=engine)
Session = sessionmaker(bind=engine)
session = Session()
mapper(EventParameters, metadata.tables['eventparameters'])
mapper(Event, metadata.tables['event'])
ep = EventParameters()
ep.publicid = 'test'
e = Event()
e.publicid = 'test'
e.eventparametersid=ep
session.add(e)
session.commit()
et ma base de données:
CREATE TABLE EventParameters (
id SERIAL PRIMARY KEY,
publicID varchar(255) UNIQUE NOT NULL,
description varchar(255),
creationInfo_agencyID varchar(64),
creationInfo_agencyURI varchar(255),
creationInfo_author varchar(128),
creationInfo_authorURI varchar(255),
creationInfo_creationTime time,
creationInfo_version varchar(64)
);
CREATE TABLE Event (
id SERIAL PRIMARY KEY,
eventParametersID integer NOT NULL REFERENCES EventParameters(id),
publicID varchar(255) UNIQUE NOT NULL,
preferredOriginID integer,
preferredMagnitudeID integer,
preferredFocalMechanismID integer,
type EventType,
typeCertainty EventTypeCertainty,
creationInfo_agencyID varchar(64),
creationInfo_agencyURI varchar(255),
creationInfo_author varchar(128),
creationInfo_authorURI varchar(255),
creationInfo_creationTime time,
creationInfo_version varchar(64)
);
Il semble que SQLAlchemy don 't r ecognize l'attribut « eventparametersid » comme une relation ...
Merci à l'avance Fabien
Merci, je ne l'ai pas lu assez le docume ntation ... :) –