4
我在我的postgresql數據庫中使用xml
,我需要一個自定義類型可以處理SQLAlchemy中的xml
數據。SQLAlchemy TypeDecorator不起作用
所以我做了XMLType
班與xml.etree
溝通,但它不工作,因爲我希望。
here`s,我寫的代碼:
import xml.etree.ElementTree as etree
class XMLType(sqlalchemy.types.TypeDecorator):
impl = sqlalchemy.types.UnicodeText
type = etree.Element
def get_col_spec(self):
return 'xml'
def bind_processor(self, dialect):
def process(value):
if value is not None:
return etree.dump(value)
else:
return None
return process
def process_result_value(self, value, dialect):
if value is not None:
value = etree.fromstring(value)
return value
它運作良好,在檢索值和結果處理。但是當我試圖插入行,我得到一個錯誤(當然,我把body
爲xml.etree.ElementTree.Element
對象):
IntegrityError: (IntegrityError) null value in column "body" violates not-null
constraint "INSERT INTO comments (id, author_id, look_id, body, created_at)
VALUES (nextval('object_seq'), %(author_id)s, %(look_id)s, %(body)s, now())
RETURNING comments.id" {'body': None, 'author_id': 1550L, 'look_id': 83293L}
眼見body
值None
,很明顯的是,結合處理器不工作對,但我認爲我已經實施了,所以我不知道該怎麼做才能改變這種狀況。
process_bind_param
給我同樣的錯誤。
我的代碼在哪裏出錯?
謝謝。這是我的無知,而不是SQLAlchemy的問題。 :-) – yoloseem 2011-12-16 14:50:40