0
J'ai une application flask et essaie de stocker un objet dans une base de données Postgres en utilisant SQLAlchemy.
je reçois l'erreur suivante:SQLAlchemy: impossible d'adapter le type 'dict'
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) can't adapt type
'dict' [SQL: 'INSERT INTO events (organizer_id, name, date, _address,
_polygon, starter_time, main_time, dessert_time, afterparty_flag,
afterparty_address, afterparty_description) VALUES (%(organizer_id)s, %
(name)s, %(date)s, %(_address)s, %(_polygon)s, %(starter_time)s, %
(main_time)s, %(dessert_time)s, %(afterparty_flag)s, %(afterparty_address)s, %
(afterparty_description)s) RETURNING events.id'] [parameters: {'organizer_id':
7, 'name': 'testevent', 'date': datetime.datetime(2017, 5, 27, 19, 8, 38,
90484), '_address': None, '_polygon': {}, 'starter_time':
datetime.datetime(2017, 5, 27, 19, 8, 38, 90500), 'main_time':
datetime.datetime(2017, 5, 27, 19, 8, 38, 90508), 'dessert_time':
datetime.datetime(2017, 5, 27, 19, 8, 38, 90514), 'afterparty_flag': True,
'afterparty_address': None, 'afterparty_description': None}]
Mon modèle de l'événement:
class Event(db.Model):
__tablename__ = 'events'
id = db.Column(db.Integer, primary_key=True)
organizer_id = db.Column(db.Integer, db.ForeignKey('organizers.id'))
# general
name = db.Column(db.String(64))
date = db.Column(db.DateTime(), default=datetime.utcnow)
_address = db.Column(db.Text(), default={})
_polygon = db.Column(db.Text(), default={})
# timetable
starter_time = db.Column(db.DateTime(), default=datetime.utcnow)
main_time = db.Column(db.DateTime(), default=datetime.utcnow)
dessert_time = db.Column(db.DateTime(), default=datetime.utcnow)
# afterparty
afterparty_flag = db.Column(db.Boolean(), default=True)
afterparty_address = db.Column(db.String(140))
afterparty_description = db.Column(db.String(140))
postcode = None
city = None
Il y a un organisateur avec l'id: 7 dans ma base de données.
J'ai déjà passé des heures à lire les journaux et à expérimenter.
Savez-vous ce qui ne va pas?
Votre colonne '_polygon' spécifie un type de' Text' mais a la valeur par défaut '{}', qui est un 'dict'. – univerio
Putain de merde tu es le meilleur! Tu avais raison, ça a corrigé mon erreur. Si vous soumettez une réponse, je peux la marquer comme résolue/acceptée. – Jan
@Jan: vous pouvez (et devrait probablement dans ce cas) [répondre à votre propre question] (https://stackoverflow.com/help/self-answer) si personne n'a –