Tra*_*vis 2 python mysql orm sqlalchemy
我正在使用SQLAlchemy ORM在我的应用程序中构建MySQL查询,并且完全能够为查询添加基本过滤器,如下所示:
query = meta.Session.query(User).filter(User.user_id==1)
Run Code Online (Sandbox Code Playgroud)
这给了我一些与此基本相同的东西:
SELECT * FROM users WHERE user_id = 1
Run Code Online (Sandbox Code Playgroud)
我的问题是如何将一些基本的MySQL数学函数集成到我的查询中.所以,比方说,我想让用户接近某个纬度和经度.所以我需要生成这个SQL($ mylatitude和$ mylongitude是我正在比较的静态纬度和经度):
SELECT * FROM users
WHERE SQRT(POW(69.1 * (latitude - $mylatitude),2) + POW(53.0 * (longitude - $mylongitude),2)) < 5
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用SQLAlchemy ORM将这些函数合并到查询中?
您可以在过滤器中使用文字SQL,请参见此处:http://www.sqlalchemy.org/docs/05/ormtutorial.html?highlight = text#using-literal-sql
例如:
clause = "SQRT(POW(69.1 * (latitude - :lat),2) + POW(53.0 * (longitude - :long),2)) < 5"
query = meta.Session.query(User).filter(clause).params(lat=my_latitude, long=my_longitude)
Run Code Online (Sandbox Code Playgroud)