zoukankan      html  css  js  c++  java
  • sqlalchemy text() 函数

    作用:封装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_param=datetime.today()+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)])
        db.execute(t,{"alarm_time_param": date_param})    
        
        参数bindparam可以使用type_来指定参数的类型, 也可以使用 initial 值来指定参数类型
            bindparam('alarm_time_param', type_=DateTime) #直接指定参数类型
            bindparam('alarm_time_param', DateTime()) #使用初始值指定参数类型
    3. 如要转换查询的结果中的数据类型, 可以通过text()的参数typemap参数指定. 这点比mybatis还灵活,
            t = text("SELECT id, name FROM users",
                    typemap={
                        'id':Integer,
                        'name':Unicode
                    }
            )
    4. 还有其他, 详见sqlalchemysqlexpression.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()
  • 相关阅读:
    SecureCRT 连接 虚拟机Linux 命令
    如何使用secureCRT连接vmware中的虚拟主机?
    SecureCRT8.1+SecureCRT_keygen完成注册
    常用python机器学习库总结
    Torch7在Ubuntu下的安装与配置
    朴素贝叶斯算法 & 应用实例
    编写MR代码中,JAVA注意事项
    march.
    Docker CentOS 7.2镜像systemd问题解决办法
    Docker 基础命令 简要入门
  • 原文地址:https://www.cnblogs.com/miaoweiye/p/12660790.html
Copyright © 2011-2022 走看看