Python 使用flask时无法执行原始sql
因此,我想在我的flask应用程序中专门运行以下sql代码:Python 使用flask时无法执行原始sql,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,因此,我想在我的flask应用程序中专门运行以下sql代码: SELECT *, (upvotes - downvotes) * age / importance * -1 AS hotness FROM 'post' ORDER BY hotness DESC LIMIT 50 为此,我使用了炼金术,如下所示: self.hotness = db.engine.execute(text("SELECT *, (upvotes - downvotes) * age / importan
SELECT *, (upvotes - downvotes) * age / importance * -1 AS hotness FROM 'post' ORDER BY hotness DESC LIMIT 50
为此,我使用了炼金术,如下所示:
self.hotness = db.engine.execute(text("SELECT *, (upvotes - downvotes) * age / importance * -1 AS hotness FROM 'post' ORDER BY hotness DESC LIMIT 50").execution_options(autocommit=True))
return self.hotness
正如关于问题的建议
问题是,self.hotness
变量总是显示为None
,即使sql代码中引用的所有其他变量都不是None
,而是数字
我猜问题是由于实际的sql代码没有提交到这里使用的表中,即post
如何使用flask sqlalchemy正确提交从原始sql生成的数据?当您说所有其他变量都有一个值时,您的意思是对于任何给定的行,它们都有一个值?我的猜测是,对于一行,其中至少有一个可能是
NULL
,这导致None
,并且由于您按热度进行排序,因此None
会冒泡到顶部。您也不必提交select语句。提交用于插入、更新或删除。我已经检查并看到输入到等式中的每个值都是整数(应该是整数)。您提到提交是用于更新的,所以假设我的热度值为None
,我可以使用update命令使用上述等式将该值更新为整数吗?我认为使用SELECT关键字是我的错误。是的,你可以使用update命令。请记住,Python的None
的SQL等价物是NULL
,因此在WHERE子句中,您需要类似于WHERE hotness is NULL