如何在sqlalchemy执行中传递原始sql中的当前日期

时间:2016-05-10 00:53:56

标签: python mysql sqlalchemy flask-sqlalchemy

我想更新mysql数据库中的datetime列。该应用程序使用sqlalchemy,但由于某种原因,我必须在这里传递一个原始的SQL。查询是

from sqlalchemy import func
session.execute(text("update table set col1=:value, date=:curr_date"),{'value:' my_value, 'curr_date:' func.now()})

查询在expected string or buffer附近引发错误'curr_date:' func.now()})。如何将返回值格式化为字符串?即使我将其格式化为字符串,如何在插入数据库时​​将其转换为日期时间?

1 个答案:

答案 0 :(得分:2)

我建议您在SQLAlchemy's TextClause.bindparams上阅读一下。我认为这可能是你正在寻找的东西。对于当前日期时间,我建议您只使用datetime.datetime.now()。请参阅以下内容:

from sqlalchemy import text
import datetime

stmt = text("UPDATE test_table SET name=:value, update_date=:curr_date WHERE id=:the_id")
stmt = stmt.bindparams(the_id=1, value='John', curr_date=datetime.datetime.now())
session.execute(stmt)  # where session has already been defined

使用以下环境,我用会话尝试了上面的代码,它运行得很好:

OS X El Capitan
MySQL Server 5.7
PyMySQL (0.7.2)
SQLAlchemy (1.0.12)
Python 3.5.1

我希望有所帮助!