SQLAlchemy ProgrammingError - 如何调试?

时间:2010-08-17 10:49:55

标签: sql sqlalchemy

我正在使用SQLAlchemy 0.5.8,并看到此错误:

ProgrammingError: (ProgrammingError) can't adapt 'INSERT INTO enumeration_value (id,
key_id, code, name, notes) VALUES (%(id)s, %(key_id)s, %(code)s, %(name)s, %(notes)s)' 
{'key_id': 'aac6fc29-4ccd-4fe4-9118-cfbbd04449fe', 'notes': '', 'code': (u'Barnet',), 
'id': 'd0540c97-882e-4a5b-bf14-b3ebcfeea051', 'name': (u'Barnet',)}

但是带有错误值的直接SQL插入似乎工作正常:

=> INSERT INTO enumeration_value (id, key_id, code, name, notes) 
VALUES ('d0540c97-882e-4a5b-bf14-b3ebcfeea051', 'aac6fc29-4ccd-4fe4-9118-cfbbd04449fe', 
'Barnet', 'Barnet', '');
INSERT 0 1

如果直接SQL工作正常,我该如何开始调试呢?

顺便说一下,抛出错误的行似乎根本没有INSERT语句,所以我有点困惑:

  File "----barnet.py", line 117, in load_file
    instance = model.Session.query(model.EnumerationValue).filter_by(key=key_barnet_level_2, code=level_2).all()

SQLAlchemy过滤语句是否生成INSERT命令,或者这恰好是事情开始出错之前的最后一行?

1 个答案:

答案 0 :(得分:1)

想出来 - 问题实际上是一个语法错误,高出几行,用一个流氓逗号:

key_from = code,

对不起,如果我浪费了任何人的时间。请关闭这个问题。