4
私のpostgresqlデータベースにxml
を使用しています。カスタムタイプでSQLAlchemyのxml
データを処理する必要があります。SQLAlchemy TypeDecoratorが機能しません
xml.etree
と通信するためにXMLType
クラスを作成しましたが、希望通りに動作しません。
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
これは、検索した値と結果の処理に適しています:
は、私が書いたコードをhere`s。しかし、私は行を挿入しようとしたとき、私は(もちろん、私は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
@HyunjunKim [faq#howtoask]を読むことをお勧めします。 –
ああ、私は「受け入れられた答え」機能があるのか分からなかった。やった。ご検討いただきありがとうございます。 – yoloseem