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

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

  •  
  •   hahahalololo · 299 天前 · 660 次点击
    这是一个创建于 299 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
       299 天前
    你这里的 self.AmazonCustomerReturn 是个表,AmazonCustomerReturns.return_date 这种用法是针对于 ORM 映射的,你改成 select([self.AmazonCustomerReturns]).where(self.AmazonCustomerReturns.c. return_date >= '2024-01-07 00:00:00')这种写法试试
    xuqiccr
        2
    xuqiccr  
       299 天前
    我盲猜的哈,我没有用过这种写法,不对不要喷我呜呜呜
    stonesirsir
        3
    stonesirsir  
       299 天前 via Android
    我的印象中用反射的话,最好动态将一个表提取成 orm 对象出来,这样对象才带字段属性,你这样是一个 table 对象,本来就没有 return_data 属性?之前用过,不对请指教
    hahahalololo
        4
    hahahalololo  
    OP
       299 天前
    @xuqiccr @stonesirsir 3q ,后面找到原因了,最后一个忘记写了.c ,改成 self.AmazonCustomerReturns.c.return_date 就行了,眼神不好,一直没有注意到这个点,后面突然发现。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3585 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 10:39 · PVG 18:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.