powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Поменять значение переменной в строке
5 сообщений из 5, страница 1 из 1
Поменять значение переменной в строке
    #40016324
IntruderLab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Столкнулся с траблой: есть у меня строка в которой присутствует переменная:
ну например :
Код: python
1.
sql_string = f'''select * from table1 where kod_object = {object} and status =1'''



Хочу оперативно из функции менять значение вложенной переменной object, как это сделать ?

Код: python
1.
2.
3.
4.
5.
def sql_change(sql, obj):
   global object
   obj = object
   # вот как в sql теперь обновить переменную {object}
  ...
...
Рейтинг: 0 / 0
Поменять значение переменной в строке
    #40016330
IntruderLab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавлю наверное часть кода чтобы было понятно:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
# Объявление переменных 
var_pskov   = '1158'
var_kval     = '0000'

sql_chess_kval_russia_1 = f'''select
   '1.105' as 'kval',
	oblast.name as 'oblast',
	get_mvalue(oblast.code,{myear_tp},{mperiod},'494',2,2,01) as 'zar_tp',
	get_mvalue(oblast.code,{myear_appg},{mperiod},'494',2,2,01) as 'zar_appg',
    get_mvalue(oblast.code,{myear_tp},{mperiod},'494',2,2,05) as 'ras_tp',
    get_mvalue(oblast.code,{myear_tp},{mperiod},'494',2,2,12) + 
	get_mvalue(oblast.code,{myear_tp},{mperiod},'494',2,2,13) +  
	get_mvalue(oblast.code,{myear_tp},{mperiod},'494',2,2,14) as 'neras_tp'
    from oblast where oblast.code = {var_kval} order by oblast.name;
'''

# теперь просто сделаю вот так 
var_kval = var_pskov

# и выведу значение var_kval и sql_chess_kval_russia_1
print(var_kval)
print(sql_chess_kval_russia_1)



Дак вот на выходе:
Значение переменной: 1158
select
'105' as 'kval',
oblast.name as 'oblast',
get_mvalue(oblast.code,20,10,'494',2,2,01) as 'zar_tp',
get_mvalue(oblast.code,19,10,'494',2,2,01) as 'zar_appg',
get_mvalue(oblast.code,20,10,'494',2,2,05) as 'ras_tp',
get_mvalue(oblast.code,20,10,'494',2,2,12) +
get_mvalue(oblast.code,20,10,'494',2,2,13) +
get_mvalue(oblast.code,20,10,'494',2,2,14) as 'neras_tp'
from oblast where oblast.code = 0000 order by oblast.name;

почему oblast.code = 0000, а не 1158 я не пойму вообще, кто подскажет
...
Рейтинг: 0 / 0
Поменять значение переменной в строке
    #40016627
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IntruderLab

почему oblast.code = 0000, а не 1158 я не пойму вообще, кто подскажет


Потому что все строковые интерполяции (т.е. подстановки) вычисляются в момент вычисления выражения. В данном случае выражение вычисляется один раз перед присваиванием его результата переменной sql_chess_kval_russia_1. Все - в переменной уже интерполированная строка и дальше ничего не происходит.

Сделайте вашу sql_chess_kval_russia_1 функцией, возвращающей запрос. Тогда выражение будет пересчитываться при каждом вызове этой функции.
...
Рейтинг: 0 / 0
Поменять значение переменной в строке
    #40016638
IntruderLab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maxkar,
я уже пробовал вот как
Код: python
1.
2.
3.
4.
5.
ef text_func(var_oblast):
    sql = f'''select * from text_table where test_id = {var_oblast}'''
    return sql

print(text_func('1100'))



так то все робит - спасибо большое за подсказку
...
Рейтинг: 0 / 0
Поменять значение переменной в строке
    #40017132
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Поменять значение переменной в строке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]