Я строю запрос выбора и добавляю к нему элементы программно. Проблема в том, что мне нужен кортеж значений, чтобы иметь запятую. Как я могу это сделать?
def build_search_query(user_list, make, model, price_min, price_max):
sql = """SELECT * FROM mycolumn WHERE user_id = %s, """
for i, d in enumerate(user_list):
if not i == 0: #skip first user because its already in sql
next_user = "OR user_id = %s, "
sql += next_user
age_str = "AND age = %s, "
height_str = "AND height = %s, "
price_min_str = "AND price > %s, "
price_max_str = "AND price < %s "
sql += age_str
sql += height_str
sql += price_min_str
sql += price_max_str
tuple1 = tuple(user_list)
tuple2 = (age, height, price_min, price_max,)
values = tuple1 + tuple2 #this is where I need the trailing comma
return sql, values
Очень кратко, ты не можешь. Значение является внутренним представлением кортежа. Как таковой, он не имеет скобок и запятых: это просто удобство для чтения человеком.
По определению, кортеж не имеет запятой. Поскольку вы возвращаете значение, а не печатное изображение (строковое представление для вывода), я не совсем уверен, куда вас привести.
Я посмотрел на ваш код, и с выбором чего-либо в любом условии в SQL после первого условия не требуется только запятая AND
как это
SELECT * FROM mycolumn WHERE user_id = %s
age_str = " AND age = {}".format(something)
build_search_query
или что происходит с возвращаемыми значениями.