В этом руководстве вы узнаете, как подключаться к базам данных SQL Server из Python.
Создание новой базы данных в SQL Server
Мы будем использовать базу данных BookStore. Чтобы создать ее, вы можете следовать этому руководству.
Настройка виртуальной среды
Шаг 1. Создайте каталог проекта, например sqlserver-python:
mkdir sqlserver-python cd sqlserver-python
Шаг 2. Создание виртуальной среды :
python -m venv venv
Шаг 3. Активируйте виртуальную среду:
venv/scripts/activate
Установка необходимых пакетов
Мы будем использовать два пакета;
- pymssql – для подключения к SQL Server.
- python-dotenv для работы с файлом .env, в котором хранятся параметры подключения к базе данных.
Шаг 1. Установите пакеты pymssql и python-dotenv с помощью следующей команды pip:
pip install pymssql python-dotenv
Он установит пакеты pymssql и python-dotenv.
Шаг 2. Создайте файл requirements.txt:
pip freeze > requirements.txt
Он сгенерирует файл requirements.txt, включающий все зависимости проекта:
pymssql==2.3.0 python-dotenv==1.0.1
Обратите внимание, что версии вашего пакета могут быть выше указанных выше.
Подключение к SQL-серверу
Шаг 1. Создайте новый файл .env в каталоге проекта, включающий параметры подключения к SQL Server:
DB_SERVER=localhost DB_NAME=BookStore DB_USER=joe DB_PASSWORD=YourPassword
Файл .env содержит четыре важных параметра базы данных:
- DB_SERVER – указывает сервер базы данных SQL Server(localhost).
- DB_NAME – указывает имя базы данных на SQL Server, к которой вы хотите подключиться. В данном случае это BookStore.
- DB_USER – предоставляет учетную запись пользователя, имеющую достаточные разрешения для подключения к SQL Server.
- DB_PASSWORD – укажите пароль для пользователя базы данных.
Шаг 2. Создайте новый модуль Python connect.py со следующим кодом:
import os, logging from pymssql import connect, Connection from dotenv import load_dotenv def create_connection() -> Connection | None: # read data from .env file load_dotenv() db_server = os.getenv('DB_SERVER') db_user = os.getenv('DB_USER') db_password = os.getenv('DB_PASSWORD') db_name = os.getenv('DB_NAME') # connect to the SQL Server try: return connect(server=db_server, user=db_user, password=db_password, database=db_name) except Exception as e: logging.error(f'Error connecting to the SQL Server database: {e}')
В файле connect.py мы определяем функцию create_connnection(), которая загружает параметры подключения к базе данных из файла .env и подключается к SQL Server.
Если соединение с базой данных установлено успешно, функция create_connection() возвращает объект Connection. В противном случае она возвращает None.
Как это работает.
Сначала импортируйте модуль os для получения параметров конфигурации из env и пакета logging для ведения журнала:
import os, logging
Во-вторых, импортируйте функцию подключения и объект подключения из пакета pymssql:
from pymssql import connect, Connection
В-третьих, импортируйте функцию load_dotenv из модуля dotenv:
from dotenv import load_dotenv
В-четвертых, загрузите переменные среды из файла .env, вызвав функцию load_dotenv():
load_dotenv()
В-пятых, считайте переменные среды, включая DB_SERVER, DB_USER, DB_PASSWORD и DB_NAME, используя функцию os.getenv():
db_server = os.getenv('DB_SERVER') db_user = os.getenv('DB_USER') db_password = os.getenv('DB_PASSWORD') db_name = os.getenv('DB_NAME')
В-шестых, подключитесь к SQL Server, вызвав функцию connect() с соответствующими параметрами базы данных:
connect(server=db_server, user=db_user, password=db_password, database=db_name)
В-седьмых, отобразите ошибку в блоке except, если во время соединения произошла ошибка:
logging.error(f'Error connecting to the SQL Server database: {e}')
Шаг 3. Создайте файл main.py и вызовите функцию create_connection для подключения к SQL Server:
import logging, sys from connect import create_connection # config logging to console logging.basicConfig( stream=sys.stdout, encoding='utf-8', format='%(levelname)s:%(message)s', level=logging.DEBUG ) # create a database connection conn = create_connection() if conn: logging.info('Connected to the SQL Server database successfully.') conn.close()
Как это работает.
Сначала импортируйте встроенные модули ведения журналов и sys:
import logging, sys
Во-вторых, импортируйте функцию create_connection из модуля connect:
from connect import create_connection
В-третьих, настройте модуль ведения журнала для записи информации на стандартный вывод, которым в данном случае является терминал:
# config logging to console logging.basicConfig( stream=sys.stdout, encoding='utf-8', format='%(levelname)s:%(message)s', level=logging.DEBUG )
В-четвертых, подключитесь к SQL Server, вызвав функцию create_connection():
conn = create_connection() if conn: logging.info('Connected to the SQL Server database successfully.') conn.close()
Если соединение установлено успешно, мы регистрируем информационное сообщение и закрываем соединение с базой данных, вызывая метод close() объекта Connection.
Шаг 4. Откройте терминал и выполните следующую команду для выполнения файла main.py:
python main.py
Если вы видите в терминале следующее, вы успешно подключились к SQL Server:
INFO:Connected to the SQL Server database successfully.
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Используйте файл .env для хранения конфигурации базы данных.
- Используйте пакет python-dotenv для чтения переменных окружений, хранящихся в файле .env.
- Вызовите функцию connect() пакета pymssql для подключения к SQL Server.
Обратите внимание, что мы повторно используем функцию create_connection() в следующих уроках для подключения к SQL Server.