У меня есть функция, которая будет использоваться для построения строки для sql запроса
def create_text(tablelist=None, fieldlist=None):
alphalist = []
alpha = 'a'
for i in range(0, len(tablelist)):
alphalist.append(alpha)
alpha = chr(ord(alpha) + 1)
for i,v in enumerate(alphalist):
if i + 1 == len(alphalist):
last=True
else:
last=False
y=str(v)
text ="SELECT "+', '.join([y+ '.' +x for x in fieldlist]) + ' FROM ' \
+str(tablelist[i]) + " as " + str(y)
if not last:
text = text + " UNION ALL"
print(text)
return text
Я называю это так
text = create_text(tablelist = ['table1', 'table2'], fieldlist = ['v1','v2'])
Это дает мне этот вывод как она печатает строку после второго l oop
SELECT a.v1, a.v2 FROM table1 as a UNION ALL
SELECT b.v1, b.v2 FROM table2 as b
Однако значение для «text» само возвращается из функции, если я просто напечатаю его
print(text)
is
SELECT b.v1, b.v2 FROM table2 as b
Это только последнее значение в l oop, поскольку оно перезаписывает значение для текста. Я просто не могу понять, как go через l oop и объединить текст с каждой итерацией, чтобы я получил возвращаемое значение, которое я хочу, которое является значением для текста =
"SELECT a.v1, a.v2 FROM table1 as a UNION ALL SELECT b.v1, b.v2 FROM table2 as b"
Спасибо