Класс URL
Класс URL представляет URL подключения к базе данных
в виде отдельных компонентов: диалекта, имени пользователя,
пароля, хоста, порта, имени базы данных и параметров запроса.
Объект URL обычно создается функцией make_url
из строки подключения либо методом URL.create напрямую.
Класс является неизменяемым, поэтому для изменения компонентов
используются методы set и update_query_dict,
возвращающие новый объект URL.
Синтаксис
from sqlalchemy import make_url
url = make_url("dialect://user:password@host:port/database?param=value")
Пример
Давайте разберем строку подключения к базе SQLite
в памяти и выведем отдельные компоненты URL:
from sqlalchemy import make_url
url = make_url("sqlite:///:memory:")
print(url.drivername)
print(url.database)
Результат выполнения кода:
"sqlite"
":memory:"
Пример
Давайте создадим объект URL методом create
и получим строковое представление через render_as_string:
from sqlalchemy import URL
url = URL.create(
drivername="sqlite",
database=":memory:",
)
print(url.render_as_string(hide_password=False))
Результат выполнения кода:
"sqlite:///:memory:"
Пример
Давайте изменим имя базы данных методом set
и добавим параметр запроса методом update_query_dict:
from sqlalchemy import make_url
url = make_url("sqlite:///:memory:")
new_url = url.set(database="articles.db")
new_url = new_url.update_query_dict({"timeout": "30"})
print(new_url.render_as_string(hide_password=False))
Результат выполнения кода:
"sqlite:///articles.db?timeout=30"
Пример
Давайте передадим объект URL в функцию create_engine
вместо строки подключения:
from sqlalchemy import URL, create_engine, text
url = URL.create(
drivername="sqlite",
database=":memory:",
)
engine = create_engine(url)
with engine.connect() as conn:
res = conn.execute(text("SELECT 1"))
print(res.scalar())
Результат выполнения кода:
"1"
Смотрите также
-
метод
create,
который создает объект URL из компонентов -
метод
render_as_string,
который возвращает строковое представление URL -
метод
set,
который возвращает новый URL с измененными компонентами -
метод
update_query_dict,
который обновляет параметры запроса URL