Python的orm框架sqlalchemy的查询多条数据只显示第一条!!

博客讲述了在使用Python的ORM框架SQLAlchemy时遇到的问题,即查询多条数据却只显示第一条。原因在于数据表的主键设置不正确,只设置了INSTR_NO作为主键,而实际上主键应该是INSTR_NO和DT两个字段。由于主键限制,这导致了查询结果只显示符合主键的一条数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我查询数据条件是时间字段的一个区间,可是每次都只返回查询结果的第一条。。
类PointVal的定义如下:
```
 class PointVal(Base):
    # 表名
    __tablename__ = 'T_ZB_PL'
    # 表结构
    INSTR_NO = Column(String(30), primary_key=True)
    DT = Column(DateTime)
    R1 = Column(String(11))
    R2 = Column(String(11))
    R3 = Column(String(11))
    NOTE = Column(String(20))
```


查询代码如下:
```
results = getSession().query(PointVal).filter(
    PointVal.INSTR_NO == 'C4-A04-PL-01').filter(and_(
        PointVal.DT > '2017-05-01 16:00:00', PointVal.DT < '2017-05-03 16:00:00')).all()
 
```
执行代码只返回第一条数据:
C4-A04-PL-01         2017-05-02 00:00:00.000 -1.7614 11.0864


而我在数据库中查询的数据有如下多条:
C4-A04-PL-01         2017-05-02 00:00:00.000 -1.7614 11.0864
C4-A04-PL-01         2017-05-02 08:00:00.000 -1.7172 11.3588
C4-A04-PL-01         2017-05-03 08:00:00.000 -1.7221 11.3398
C4-A04-PL-01         2017-05-03 16:00:00.000 -1.7831 10.9346
C4-A04-PL-01         2017-05-04 00:00:00.000 -1.8004 10.9532
C4-A04-PL-01         2017-05-04 08:01:00.000 -1.6868 11.3043
C4-A04-PL-01         2017-05-04 16:00:00.000 -1.7960 10.8514
C4-A04-PL-01         2017-05-05 00:00:00.000 -1.7828 10.9263
C4-A04-PL-01         2017-05-05 08:00:00.000 -1.6734 11.1985


----------------------------------------------------------------------------------------------

已解答:

主键设置错误,该数据表的主键应为INSTR_NO和DT。只设置INSTR_NO为主键导致主键不能重复,只显示一条数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值