orm设置bool型 python_在SQLAlchemy中作为子句元素的布尔类型列

本文介绍了在SQLAlchemy ORM中如何使用布尔类型的列进行过滤操作。示例展示了在0.7和0.8版本中,如何正确地在`filter()`调用中使用多个条件以及如何处理0.7版本不直接支持的情况。内容包括创建数据模型,使用不同数据库引擎,并提供了在不同版本下过滤查询的示例代码。
摘要由CSDN通过智能技术生成

我想也许您现在使用的是0.7,而ORM还不支持在一个filter()调用中使用多个条件,这是在0.8中添加的,如果是独立的,那么0.7似乎也需要表绑定列。在0.8中一切正常:from sqlalchemy import *

from sqlalchemy.orm import *

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class A(Base):

__tablename__ = "a"

id = Column(Integer, primary_key=True)

data = Column(String(20))

boolean = Column(Boolean)

# works

e = create_engine("sqlite://", echo=True)

# works

#e = create_engine("postgresql://scott:tiger@localhost/test", echo=True)

# works

#e = create_engine("mysql://scott:tiger@localhost/test", echo=True)

Base.metadata.create_all(e)

s = Session(e)

s.add_all([

A(data='a1', boolean=True),

A(data='a2', boolean=False),

A(data='a3', boolean=True),

])

# works

print s.query(A).filter(A.data > 'a1', A.boolean).all()

# works

print s.query(A).filter(A.boolean).all()

# if before 0.8, need to use and_() or table-bound column

# print s.query(A).filter(and_(A.data > 'a1', A.boolean)).all()

# print s.query(A).filter(A.__table__.c.boolean).all()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值