Python 如何从函数中查询数据

Python 如何从函数中查询数据,python,sqlite,function,Python,Sqlite,Function,该函数用于查询数据库中的事务。我可以让他们单独工作。是否有一种方法可以让函数根据客户名称和日期范围查询数据,而不必再做另一个“if”语句 def query_data(c, dateRange=None, customer_name=None, customer_id=None, customer_date=None): if customer_name is not None: query_where = 'customer_name=?' query

该函数用于查询数据库中的事务。我可以让他们单独工作。是否有一种方法可以让函数根据客户名称和日期范围查询数据,而不必再做另一个“if”语句

def query_data(c, dateRange=None, customer_name=None, customer_id=None, customer_date=None):

    if customer_name is not None:
        query_where = 'customer_name=?'
        query_args = [customer_name]
        query_where = f'{query_where}'

    if customer_id is not None:
        query_where = 'customer_name=(SELECT customer_name FROM customers WHERE customer_id=?)'
        query_args = [customer_id]
        query_where = f'{query_where}'

    if customer_date is not None:
        query_where = 'order_date=?'
        query_args = [customer_date]
        query_where = f'{query_where}'

    if dateRange is not None:
        split_date = dateRange.split(",")
        query_where = 'order_date BETWEEN DATE(?) AND DATE(?)'
        query_args = [split_date[0], split_date[1]]
        query_where = f'{query_where}'

    query_string = f"SELECT * FROM transactions WHERE {query_where}"
    c.execute(query_string, query_args)
    return c.fetchall()

将您的子查询放入一个类似于
subquerys=['subquery1','subquery2']
的列表中,然后用
'和'.join(subquerys)
组合子查询。使用现有的轻量级ORM或SQL builder库(,)。Maurice可能是对的。根据您的使用情况,您需要小心SQL注入漏洞和恶意用户造成的破坏。