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)
个人建议使用python-sql包
参考