Всем доброго времени суток.
Подскажите, при работе с базами данных как лучше оформить код для соединения с БД, закрытием соединения и собственно запросами к БД?
Как я понимаю можно создать функции create_connection(params), close_connection(conn) и для каждого запроса сделать отдельную функцию куда передавать курсор. Или, можно сделать как в коде ниже:
spoiler#!/usr/bin/env python3
import pyodbc
MySQL_PARAMS = (
'DRIVER={FreeTDS};'
'Server=;'
'Database=;'
'UID=;'
'PWD='
)
MSSQL_PARAMS = (
'DRIVER={ODBC Driver 17 for SQL Server};'
'Server=;'
'Database=;'
'UID=;'
'PWD='
)
def exec_request(connection, req):
with pyodbc.connect(connection) as conn:
with conn.cursor() as cur:
cur.execute(req)
return cur.fetchall()
def get_user_list():
req = '''
SELECT id, phone_mobile
FROM `users`
WHERE user_name='user1'
'''
return req
def get_office_hours():
req = '''
Declare @now datetimeoffset = DATEADD(day,-1,FORMAT(SYSDATETIME(),'yyyy-MM-dd'));
select message, DateTime, SUBSTRING(Details,21,25) as CardKey
from [RusGuardDB].[dbo].[Log] where DateTime >= @now and Details like 'по ключу%' order by datetime
'''
return req
def main():
office_hours = exec_request(MSSQL_PARAMS, get_office_hours())
id, card_num = exec_request(MySQL_PARAMS, get_user_list())[0]
for row in office_hours:
if card_num in row[2]:
print(id, row[1])
if __name__ == "__main__":
main()
Не смог найти проект, где можно было бы ознакомиться с тем, как люди работают с БД, чаще попадаются примеры с тем как соединиться с БД и что-то выполнить. Возможно, кто-то подскажет как сделать более корректно или даст ссылку на чей-либо код, где работают с БД.