python 如何使用源生sql语句查询多个参数的情况
这是python中的一个查询:result_list=list(CrashLog.objects.raw('select*fromoms_crashlogwhere1=1...
这是python 中的一个查询:
result_list = list(CrashLog.objects.raw('select *
from oms_crashlog where 1=1 and (platform="" or platform=%s) and
(platform="" or product=%s)', params=params))
例如网上看到个这样的一个列子:
有选项参数 @age 并要查询 age= @age:
可书写为: and (@age is null or age= @age)
有选项参数 @name 并要查询 name = @name
可书写为: and (@name is null or name = @name)
这是别人的一个问题,我想问的时要是没有选项参数age但是有name,那这个该怎么写,在python中这个@也不能用不知道这个@时什么意思?
(另外我要查询的参数比较多,所以我想问,用你这种sql语句能将各种情况包含吗?能的话,怎么包含?)
网页post进来的数据
platform = request.POST['platform']
product = request.POST['product']
device = request.POST['device']
ip = request.POST['ip'] 展开
result_list = list(CrashLog.objects.raw('select *
from oms_crashlog where 1=1 and (platform="" or platform=%s) and
(platform="" or product=%s)', params=params))
例如网上看到个这样的一个列子:
有选项参数 @age 并要查询 age= @age:
可书写为: and (@age is null or age= @age)
有选项参数 @name 并要查询 name = @name
可书写为: and (@name is null or name = @name)
这是别人的一个问题,我想问的时要是没有选项参数age但是有name,那这个该怎么写,在python中这个@也不能用不知道这个@时什么意思?
(另外我要查询的参数比较多,所以我想问,用你这种sql语句能将各种情况包含吗?能的话,怎么包含?)
网页post进来的数据
platform = request.POST['platform']
product = request.POST['product']
device = request.POST['device']
ip = request.POST['ip'] 展开
展开全部
# coding: utf-8
# an example
"""
-- the SQL Server storage process:
drop procedure proc_getconflist
go
create procedure proc_getconflist
@customer char(6)
, @servicekey varchar(16) = NULL
, @dt_bgn datetime = NULL
, @dt_end datetime = NULL
as begin
select billsumidx as idx
from conf_billsum
where 1=1
and sumtypeid=1
and isnull(@customer, customercode) = customercode
and isnull(@servicekey, servicekey) = servicekey
and isnull(@dt_bgn, begintime) < endtime
and begintime < isnull(@dt_end, endtime)
end
go
"""
import pymssql
conn = pymssql.connect(
host="192.168.70.7",
user='pyquery',
password='Qpery',
database='gb201412',
)
curr = conn.cursor()
curr.execute("exec proc_getconflist %s, %s, %s, %s",
('990003', None, None, None))
for idx, in curr:
print idx
curr.close()
conn.close()
追问
这个时django自带的查询,但是条件多的话,要写很多if else 判断,你上面的写的我暂时没有接触过,有点不太懂.
if platform and product and device:
result_list = CrashLog.objects.filter(platform=platform, product=product, device=device)
追答
# django不了解,似乎可以这样试试看:
result_list = list(CrashLog.objects.raw(
''' select *
from oms_crashlog
where 1=1
and (isnull(%s, platform)=platform)
and (isnull(%s, product)=product)
and (isnull(%s, device)=device)
and (isnull(%s, ip)=ip)
''',
params=map(request.POST.get, (
'platform',
'product',
'device',
'ip'))
))
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询