我试图使用sqlalchemy执行原始sql查询,想知道什么是“正确”的方法。
我的查询如下(目前):
db.my_session.execute(
"""UPDATE client SET musicVol = {}, messageVol = {}""".format(
music_volume, message_volume))
我不喜欢的是字符串格式和缺少任何参数处理(在music_volume中用引号引起来的:-D)。
我试图遵循以下答案:
如何在SQLAlchemy-
flask应用程序中执行原始SQL
应用我阅读的内容后,我的代码段如下所示:
db.my_session.execute(
"UPDATE client SET musicVol = :mv , messageVol = :ml", mv=music_volume, ml=message_volume)
但是我收到错误,指出mv和ml无法识别参数。
如果我将代码段更改为此,它可以工作:
db.my_session.execute(
"UPDATE client SET musicVol = :mv , messageVol = :ml", {mv: music_volume, ml: message_volume})
最后,像在名为db.py的文件中那样启动my_session:
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
对于实际对我有用的解决方案,显示出略有不同的解决方案。
同样,如果我的方法可行。
双方mv
并ml
不会被认可,因为你还没有他们定义为变量。
:ml”在该字典的键中搜索用冒号转义的普通查询的所有元素。该
execute方法没有找到一个关键
‘mv’也不
‘ml’`在本词典,因此将引发一个错误。
这是正确的版本:
db.my_session.execute(
"UPDATE client SET musicVol = :mv, messageVol = :ml",
{'mv': music_volume, 'ml': message_volume}
)
我正在尝试使用sqlalchemy执行原始sql查询,并想知道什么是“正确”的方法。 我的查询如下(目前): 我不喜欢的是字符串格式和缺乏任何参数处理(你好music_volume引号:-D)。 我试图遵循这个答案: 如何在SQLAlchemy flask应用程序中执行原始SQL 应用我读到的内容后,我的代码片段如下所示: 然而,我得到的错误,mv和ml是不能识别的参数。 如果我把我的代码片段改成
Sequelize中有两种查询:使用Model(模型)中的方法查询和使用sequelize.query()进行基于SQL语句的原始查询。 Model查询 1.1 Attributes - 属性与查询字段 1.2 Where - 指定筛选条件 1.3 limit/offset - 分页与限制返回结果数 1.4 查询排序 原始查询 2.1 原始查询方法 2.2 查询参数替换 2.3 参数绑定 1. M
问题内容: 我正在尝试使用原始sqlalchemy查询将值插入Postgres11数据库。通过psql- client运行以下SQL查询时,它可以正常运行: 所有行均正确插入: 但是,如果我在sqlalchemy中创建一个引擎,并使用相同的查询在其上调用execute,它会成功运行,但不会插入任何行: 但是没有插入新行: 通过psql-client运行查询与通过sqlalchemy执行查询有何不同
在模型查询API不够用的情况下,你可以使用原始的sql语句。django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的sql语句。 警告 编写原始的sql语句时,应该格外小心。每次使用的时候,都要确保转义了参数中的任何控制字符,以防受到sql注入攻击。更多信息请参阅防止sql注入。 进行原始查询 r
由于常常使用简单的方式来执行原始/已经准备好的SQL查询,因此可以使用 sequelize.query 函数. 默认情况下,函数将返回两个参数 - 一个结果数组,以及一个包含元数据(受影响的行等)的对象. 请注意,由于这是一个原始查询,所以元数据(属性名称等)是具体的方言. 某些方言返回元数据 "within" 结果对象(作为数组上的属性). 但是,将永远返回两个参数,但对于MSSQL和MySQL
我试图运行这个简单的原始sql语句与参数SQLALChemy(在一个alembic脚本): 我得到以下错误: 解决方案: