我想更新 mysql 数据库中的日期时间列。该应用程序使用 sqlalchemy 但出于某种原因我必须在此处传递原始 sql。查询是
from sqlalchemy import func
session.execute(text("update table set col1=:value, date=:curr_date"),{'value:' my_value, 'curr_date:' func.now()})
查询在 'curr_date:' func.now()})
附近抛出错误 expected string or buffer
。如何将返回值格式化为字符串?即使我将其格式化为字符串,插入数据库时如何将其转换为日期时间?
最佳答案
我建议阅读一下 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
使用以下环境,我在一个 session 中尝试了上面的代码,它工作得很好:
OS X El Capitan
MySQL Server 5.7
PyMySQL (0.7.2)
SQLAlchemy (1.0.12)
Python 3.5.1
希望对您有所帮助!
关于python - 如何在 sqlalchemy execute 中传递原始 sql 中的当前日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127627/