我想更新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()})
。如何将返回值格式化为字符串?即使我将其格式化为字符串,如何在插入数据库时将其转换为日期时间?
答案 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
我希望有所帮助!