yes*_*ken 4 python sql database postgresql sqlalchemy
SELECT *
FROM product_stocks
WHERE detected_date = (
SELECT MAX(detected_date)
FROM product_stocks
WHERE id = 18865
)
AND id = 18865;
Run Code Online (Sandbox Code Playgroud)
将其转换为 SQLAlchemy 查询字符串时遇到很多麻烦。最有效的方法是什么?
您可以使用from_statement执行原始 SQL-Query 并在 SQL-Alchemy 对象中获取它。当编写普通 SQL 比 SQLAlchemy 语法更容易时,这会有所帮助。
Session.query(YourClass).from_statement(text('''SELECT * FROM product_stocks
WHERE detected_date = (SELECT MAX(detected_date) FROM product_stocks WHERE id = 18865)
AND id = 18865;''')).all()
Run Code Online (Sandbox Code Playgroud)
下面将重新创建您要求的 SQL:
_id = 18865
T = aliased(ProductStock, name="T")
T1 = aliased(ProductStock, name="T1")
subquery = (
session.query(func.max(T1.detected_date).label("detected_date"))
.filter(T1.id == _id)
# .filter(T1.id == T.id) # @note: i prefer this one to the line above
.as_scalar()
)
qry = (
session.query(T)
.filter(T.detected_date == subquery)
.filter(T.id == _id)
)
Run Code Online (Sandbox Code Playgroud)
这是实现您想要的目标的最有效方法吗?- 我不太确定,但信息不够
| 归档时间: |
|
| 查看次数: |
6269 次 |
| 最近记录: |