sqlalchemytext()函数
作⽤:封装sql字符串
1. 不同数据库, 可以使⽤统⼀的sql参数传递写法. 参数须以:号引出. 在调⽤execute()的时候, 使⽤dict结构将实参传进去. from sqlalchemy import text
result = db.execute(text('select * from table where id < :id and typeName=:type'), {'id': 2,'type':'USER_TABLE'})
2. 如果不指定parameter的类型, 默认为字符串类型; 如果要传⽇期参数, 需要使⽤text()的bindparams参数来声明
from sqlalchemy import DateTime
date_day()+timedelta(days=-1*10)
sql="delete from caw_job_alarm_log where alarm_time<:alarm_time_param"
t=text(sql, bindparams=[bindparam('alarm_time_param', type_=DateTime, required=True)])
参数bindparam可以使⽤type_来指定参数的类型, 也可以使⽤ initial 值来指定参数类型
bindparam('alarm_time_param', type_=DateTime) #直接指定参数类型
text函数什么意思bindparam('alarm_time_param', DateTime()) #使⽤初始值指定参数类型
3. 如要转换查询的结果中的数据类型, 可以通过text()的参数typemap参数指定. 这点⽐mybatis还灵活,
t = text("SELECT id, name FROM users",
typemap={
'id':Integer,
'name':Unicode
}
)
4. 还有其他, 详见sqlalchemy\sql\expression.py中的docstring.
⽤法⽰例:
from sqlalchemy import text
query.filter(text("id>1")).all()
query.filter(Person.id>1).all() #同上
query.filter(text("id>:id")).params(id=1).all() #使⽤:,params来传参
query.from_statement(
text("select * from person where name=:name")).\
params(name='jack').all()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论