Что касается вашего первоначального вопроса, решение для этого случая: замыкание :
def f(x):
def long_calculation(y):
return x * y
return long_calculation
# create different functions without dispatching multiple times
g = f(val_1)
h = f(val_2)
g(val_3)
h(val_3)
Ну, проблема в том, почему вы hardcode все?С обновлением вы можете упростить вашу функцию как:
def phone_number(phone_number_status, db_name='fi_sql_identity'):
cursor = functions_concerning_SQL_conection.choosen_db(db_name)
if phone_number_status == 'wrong':
sql = "SELECT TOP 1 PersonalId from Registrations where PhoneNumber is NULL"
else:
sql = "SELECT TOP 1 PersonalId from Registrations where PhoneNumber is not NULL"
cursor.execute(sql)
result = cursor.fetchone()
return result[0]
Также, пожалуйста, не пишите как:
# WRONG
fi_db_conn.send_data()
Но используйте параметр :
region = 'fi' # or "es"
db_conn = initialize_conn(region)
db_conn.send_data()
И используйте файл конфигурации для хранения ваших конечных точек относительно вашего региона, например, рассмотрите YAML :
# config.yml
es:
db_name: es_sql_identity
fi:
db_name: fi_sql_identity
Затем используйте их в Python:
import yaml
with open('config.yml') as f:
config = yaml.safe_load(f)
region = 'fi'
db_name = config[region]['db_name'] # "fi_sql_identity"
# status = ...
result = phone_number(status, db_name)
См. Дополнительную полезную ссылку для использования YAML.