Python-具有非一致参数的数据库查询函数

Python-具有非一致参数的数据库查询函数,python,sql,Python,Sql,因此,我有一个包含10个字段(称为a、b、c………j)的数据库,我需要创建一个函数“find_use()”,该函数可以根据作为参数提供给它的字段的任意组合来查找和修改数据库中的记录(即:find_use(a==“happy”,g==“birth”))。此外,由于特权,我没有直接生成SQL查询,而是使用系统提供的名为“selector()”的SQL包装器,它将根据相同的参数定位记录,即:query=selector(a==“happy”,g==“birth”),然后返回匹配记录的列表 所以问题是,

因此,我有一个包含10个字段(称为a、b、c………j)的数据库,我需要创建一个函数“find_use()”,该函数可以根据作为参数提供给它的字段的任意组合来查找和修改数据库中的记录(即:find_use(a==“happy”,g==“birth”))。此外,由于特权,我没有直接生成SQL查询,而是使用系统提供的名为“selector()”的SQL包装器,它将根据相同的参数定位记录,即:query=selector(a==“happy”,g==“birth”),然后返回匹配记录的列表

所以问题是,因为我不知道find_use()将接收哪些参数,所以我不知道如何构造对selector()的内部调用。理想情况下,对选择器的调用应该动态创建;大意是:

def find_use(a='',b='',c='',.....j=''):
   vars = locals()
   for v in vars:
      if v.value() != '':
        q_string += '{0} == {1},'.format(v.key(),v.value())
   query = selector(q_string) 
   ...do something to query...

但是,这不起作用,因为选择器不接受字符串,而是接受与find_use()函数格式相同的参数。那么,如何才能做到这一点呢。我觉得这其实很简单,我只是错过了一些明显的东西。如果您有任何意见,我们将不胜感激。

我想您正在寻找:

以这种方式定义时,
find\u use
可以接收任意数量的关键字参数。关键字参数收集在dict中,
kwargs

比如说,

def foo(**kwargs):
    print(kwargs)    
foo(a = 'happy', g = 'birthday')
屈服

{'a': 'happy', 'g': 'birthday'}
happy
birthday
如果

def bar(a, g):
    print(a)
    print(g)
然后

屈服

{'a': 'happy', 'g': 'birthday'}
happy
birthday

正是我需要的。谢谢