【发布时间】:2015-05-26 08:38:48
【问题描述】:
我正在尝试使用 sqlalchemy 执行原始 sql 查询,并想知道什么是“正确”的方法。
我的查询如下(目前):
db.my_session.execute(
"""UPDATE client SET musicVol = {}, messageVol = {}""".format(
music_volume, message_volume))
我不喜欢的是字符串格式和缺少任何参数处理(你好,music_volume 中的引号 :-D)。
我试图遵循这个答案:
How to execute raw SQL in SQLAlchemy-flask app
应用我阅读的内容后,我的 sn-p 如下所示:
db.my_session.execute(
"UPDATE client SET musicVol = :mv , messageVol = :ml", mv=music_volume, ml=message_volume)
但是我收到错误消息,mv 和 ml 是无法识别的参数。
如果我把我的 sn-p 改成这个,它可以工作:
db.my_session.execute(
"UPDATE client SET musicVol = :mv , messageVol = :ml", {mv: music_volume, ml: message_volume})
最后 my_session 在名为 db.py 的文件中启动:
engi = sqlalchemy.create_engine(
'mysql://{user}:{passwd}@{host}/{db}'.format(
host=settings.HOST,
user=settings.USER,
passwd=settings.PASS,
db=settings.DB_NAME), execution_options={
'autocommit': True,
})
my_session = sqlalchemy.orm.scoped_session(sqlalchemy.orm.sessionmaker(bind=engi), scopefunc=os.getpid)
sqlalchemy.orm.scoped_session.configure(my_session, autocommit=True)
我想知道的是为什么上面链接的答案和这部分文档:
http://docs.sqlalchemy.org/en/rel_0_9/core/tutorial.html#using-text
显示的解决方案与实际对我有用的解决方案略有不同。
如果我的方法是一种方法。
【问题讨论】:
标签: python mysql sql sqlalchemy