python - 如何在 sqlalchemy execute 中传递原始 sql 中的当前日期

标签 python mysql sqlalchemy flask-sqlalchemy

我想更新 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/

相关文章:

python - 使用 Python 透明地挂载 tar.gz 存档

python - 在 python 3.4.3 中生成对象

javascript - 对工作 PHP 脚本的成功 AJAX 调用不返回任何内容

php - MySQL:保存十六进制值的节省空间的方法

python - 如何替换sqlalchemy查询中的列

SQLAlchemy if/not 查询 session 已附加

python - 将文件从 Python 客户端上传到 Django 服务器

Python 进程由于打开 Paramiko ssh 连接而挂起

mysql - 如何将sql查询转换为hibernate查询以从数据库获取上周记录

python sqlalchemy - 将表映射到特定的数据结构