python拼接sql动态查询语句有更好的写法吗

django里支持执行原生sql语句,那么问题来了。。我有一个算是比较复杂的sql动态查询需要拼装,
是否有好的语法来写?

sqlParam = []
        sql = r'''select s.CODE,s.SUM_STOCK  ,
        p.id as product_id,
        p.name as product_name,
        p.SF_MODEL as product_sfModel
        from (select s.CODE, sum(s.STOCK) as sum_stock  from T_MyTableS s
        where  1=1
        '''
        if warehouserealId:
            sql += 'AND s.WAREHOUSE_REAL_ID = %s'
            sqlParam += [warehouserealId]

        if productCode:
            sql += 'AND s.CODE LIKE %s'
            sqlParam += [productCode + '%']

        sql += r''' GROUP BY s.CODE  ) s 
            left join T_MyTableP p on s.code = p.code
            left join T_MyTableU u on p.BASIC_UNIT = u.ID
            where 1=1
        '''
        if productName:
            sql += 'AND p.name LIKE %s'
            sqlParam += ['%' + productName + '%']

        sql += r'''order by s.CODE'''

        query = T_MyTableS.objects.raw(sql, params=sqlParam)
阅读 12.2k
2 个回答

可以使用Django的filter,通过字段进行过滤

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题