Python: Как переключиться с одной базы данных на другую в зависимости от даты файла в запросе через 'pyodb c .connect' или что-то еще? - PullRequest
0 голосов
/ 27 февраля 2020
value_date = (pd.to_datetime('30-Oct-2019').strftime('%d-%b-%Y')).upper()   

iss_cnxn = pyodbc.connect('driver={SQL Server Native Client 11.0};'
                      'server=abc;'
                      'database=xyz;' 
                      'trusted_connection=yes')

sql_query = ' '.join(f"""select
xxx as x,
yyy as y,
zzz as z,
from dbo.abcd P WITH(NOLOCK)
where filedate = '{value_date}'""".split())

Каков наилучший способ определения базы данных на основе «файловой даты», которую мы запрашиваем? В этом примере я жестко закодировал значение value_date как 30 октября 2019 года, но мы передадим параметр date позже. Есть ли какая-либо функция или что-то для переключения базы данных на основе filedate? Должна быть некоторая связь между датой файла и переключением базы данных. Пожалуйста, предложите.

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете использовать простой оператор if для изменения имени базы данных и использовать форматирование строки для передачи правильного имени базы данных в ваше соединение. Например, если query_date находится в будущем, используйте db1, иначе используйте db2. Измените datetime.now () на любую нужную вам дату.

from datetime import datetime
if query_date > datetime.now():
    db = 'db1'
else:
    db = 'db2'
iss_cnxn = pyodbc.connect('driver={SQL Server Native Client 11.0};'
                      'server=abc;'
                      'database={};'.format(db) 
                      'trusted_connection=yes')
...