V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hahahalololo
V2EX  ›  问与答

sqlalchemy 查询报错,求大佬们帮忙瞅瞅

  •  
  •   hahahalololo · 316 天前 · 673 次点击
    这是一个创建于 316 天前的主题,其中的信息可能已经有所发展或是发生改变。
    self.AmazonCustomerReturns = Table('amazon_customer_returns', metadata, autoload=True, autoload_with=engine)
    session = Session(engine)
    
    result = session.query(self.AmazonCustomerReturns).first()
    print(111,result)
    
    result = session.query(self.AmazonCustomerReturns).filter_by(return_date='2024-01-07 00:00:00').all()
    print(222, result)
    
    result=session.query(self.AmazonCustomerReturns).filter(self.AmazonCustomerReturns.return_date>='2024-01-07 00:00:00').all()
    print(333, result)
    

    前面 2 个都没有问题,这个字段也是有的,执行到第三个的时候报错 AttributeError: 'Table' object has no attribute 'return_date' 求助大佬们瞅瞅。。

    4 条回复    2024-01-11 11:25:37 +08:00
    xuqiccr
        1
    xuqiccr  
       316 天前
    你这里的 self.AmazonCustomerReturn 是个表,AmazonCustomerReturns.return_date 这种用法是针对于 ORM 映射的,你改成 select([self.AmazonCustomerReturns]).where(self.AmazonCustomerReturns.c. return_date >= '2024-01-07 00:00:00')这种写法试试
    xuqiccr
        2
    xuqiccr  
       316 天前
    我盲猜的哈,我没有用过这种写法,不对不要喷我呜呜呜
    stonesirsir
        3
    stonesirsir  
       316 天前 via Android
    我的印象中用反射的话,最好动态将一个表提取成 orm 对象出来,这样对象才带字段属性,你这样是一个 table 对象,本来就没有 return_data 属性?之前用过,不对请指教
    hahahalololo
        4
    hahahalololo  
    OP
       316 天前
    @xuqiccr @stonesirsir 3q ,后面找到原因了,最后一个忘记写了.c ,改成 self.AmazonCustomerReturns.c.return_date 就行了,眼神不好,一直没有注意到这个点,后面突然发现。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5258 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:09 · PVG 17:09 · LAX 01:09 · JFK 04:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.