Ich habe ein seltsames Problem mit der Abfrage von Zeichenfolgen mit Oracle 11g Backend für SQLAlchemy. Erstens Klassendefinition (für Oracle, für Postgres ist es das gleiche minus Sequence
):Filterung für leere Zeichenfolge in SQLAlchemy + Oracle
class Item(Base):
__tablename__ = 'item'
id = Column(Integer, Sequence('id_seq'), primary_key=True)
...
review = Column(Unicode(2000), index=True)
Grund anfragende funktioniert ohne Probleme mit Postgres-Backend:
In [1]: len(DBSession.query(Item).filter(Item.review != '').limit(100).all())
Out[1]: 100
jedoch mit Oracle 11g:
In [31]: len(DBSession.query(Item).filter(Item.review != '').limit(100).all())
Out[31]: 0
Filterung durch leeres Unicode-String funktioniert auch nicht in Oracle:
In [32]: len(DBSession.query(Item).filter(Item.review != u'').limit(100).all())
Out[32]: 0
Warum etwas so Grundlegendes nicht mit Oracle funktioniert? Und wie kann ich das beheben?