第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 SQLAlchemy ORM 中過(guò)濾給定字符串長(zhǎng)度的列?

如何在 SQLAlchemy ORM 中過(guò)濾給定字符串長(zhǎng)度的列?

當(dāng)年話下 2023-03-16 09:16:39
我正在嘗試實(shí)現(xiàn)一個(gè)相當(dāng)簡(jiǎn)單的 SQL 查詢,該查詢僅返回包含長(zhǎng)度小于 17 個(gè)字符的字符串(SQLite3 中的文本類(lèi)型)的行。這是計(jì)劃 SQL 中的查詢:SELECT * FROM table WHERE length(col) < 17我嘗試通過(guò)使用以下語(yǔ)句來(lái)獲取它:result = session.query(Table).filter(func.length(Table.col) < 17).all()SQLAlchemy 將其正確翻譯為 [SQL: SELECT table.col AS table_col FROM table WHERE length(?) < ?] 問(wèn)題出在它為問(wèn)號(hào)插入的值。即它取代了第二個(gè)?17 就好了,但是 Table.column 不是獲取實(shí)際長(zhǎng)度,而是獲取代表該列的對(duì)象。 [parameters: (<property object at 0x00000226998E3590>, 17)]. 這導(dǎo)致我收到錯(cuò)誤 sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 0 - probably unsupported type.。那么如何使用 SQLAlchemy ORM 正確過(guò)濾字符串長(zhǎng)度呢?
查看完整描述

1 回答

?
MYYA

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊

原來(lái)錯(cuò)誤都是我的,我只是使用了錯(cuò)誤的列名作為 func.length 的參數(shù)。例如,這就是模型的樣子

class Table(Base):
    __tablename__ = 'table'
    __table_args__ = {'autoload': True}
    aliased_col = Column('col', Text, nullable=False)

我試圖這樣查詢

result = session.query(Table).filter(func.length(Table.col) < 17).all()

顯然我應(yīng)該這樣做

result = session.query(Table).filter(func.length(Table.aliased_col) < 17).all()

效果很好。我讓自己感到困惑,因?yàn)殄e(cuò)誤消息將我指向<property object at 0x00000226998E3590>乍一看似乎合理的屬性。


查看完整回答
反對(duì) 回復(fù) 2023-03-16
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)