0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Что это такое</a></li>
1
<ul><li><a>Что это такое</a></li>
2
<li><a>ORM - это…</a></li>
2
<li><a>ORM - это…</a></li>
3
<li><a>Преимущества SQLAlchemy</a></li>
3
<li><a>Преимущества SQLAlchemy</a></li>
4
<li><a>Начало работы</a><ul><li><a>Инициализация</a></li>
4
<li><a>Начало работы</a><ul><li><a>Инициализация</a></li>
5
<li><a>SQLAlchemy Core</a></li>
5
<li><a>SQLAlchemy Core</a></li>
6
<li><a>Подключение к БД</a></li>
6
<li><a>Подключение к БД</a></li>
7
<li><a>Как создать таблицу</a></li>
7
<li><a>Как создать таблицу</a></li>
8
<li><a>SQL-выражения</a></li>
8
<li><a>SQL-выражения</a></li>
9
</ul></li>
9
</ul></li>
10
</ul><p>Разработка программного обеспечения требует изучения языков программирования. Одним из наиболее популярных является Python. Он пользуется спросом не только у новичков, но и у опытных разработчиков. </p>
10
</ul><p>Разработка программного обеспечения требует изучения языков программирования. Одним из наиболее популярных является Python. Он пользуется спросом не только у новичков, но и у опытных разработчиков. </p>
11
<p>Python оснащен богатым спектром инструментов. Один из них - это SQLAlchemy. Данный продукт появился еще в 2006 году. Он набрал огромную популярность среди тех, кто использует в своих проектах базы данных. Далее предстоит изучить the SQLAlchemy в Python более подробно.</p>
11
<p>Python оснащен богатым спектром инструментов. Один из них - это SQLAlchemy. Данный продукт появился еще в 2006 году. Он набрал огромную популярность среди тех, кто использует в своих проектах базы данных. Далее предстоит изучить the SQLAlchemy в Python более подробно.</p>
12
<h2>Что это такое</h2>
12
<h2>Что это такое</h2>
13
<p>The SQLAlchemy - программное обеспечение с открытым исходным кодом. Оно используется для работы с базами данных через язык запросов SQL. Использует для работы технологии ORM (Object Relational Mapping). С ее помощью удается связать базы данных с концепциями объектно-ориентированных языков разработки.</p>
13
<p>The SQLAlchemy - программное обеспечение с открытым исходным кодом. Оно используется для работы с базами данных через язык запросов SQL. Использует для работы технологии ORM (Object Relational Mapping). С ее помощью удается связать базы данных с концепциями объектно-ориентированных языков разработки.</p>
14
<p>Написан the SQLAlchemy ORM на Питоне. Предоставляет полную мощность и гибкость SQL для программистов. Является кроссплатформенным инструментом, функционирующим по лицензии MIT.</p>
14
<p>Написан the SQLAlchemy ORM на Питоне. Предоставляет полную мощность и гибкость SQL для программистов. Является кроссплатформенным инструментом, функционирующим по лицензии MIT.</p>
15
<p>Первая версия the SQLAlchemy ORM была выпущена в феврале 2006 года Майклом Байером. Последняя и актуальная опубликована в апреле 2018.</p>
15
<p>Первая версия the SQLAlchemy ORM была выпущена в феврале 2006 года Майклом Байером. Последняя и актуальная опубликована в апреле 2018.</p>
16
<h2>ORM - это…</h2>
16
<h2>ORM - это…</h2>
17
<p>ORM или Object Relational Mapping) - метод программирования для преобразования данных между несовместимыми системами типов в объектно-ориентированной разработке. Обычно системы типов в языках ООП вроде the Python включает в себя нескалярные типы. Они не могут быть выражены как примитивные:</p>
17
<p>ORM или Object Relational Mapping) - метод программирования для преобразования данных между несовместимыми системами типов в объектно-ориентированной разработке. Обычно системы типов в языках ООП вроде the Python включает в себя нескалярные типы. Они не могут быть выражены как примитивные:</p>
18
<ul><li>строки;</li>
18
<ul><li>строки;</li>
19
<li>целочисленные значения.</li>
19
<li>целочисленные значения.</li>
20
</ul><p>Объекты в скалярных данных должны быть преобразованы для взаимодействия с базой данных the Python.</p>
20
</ul><p>Объекты в скалярных данных должны быть преобразованы для взаимодействия с базой данных the Python.</p>
21
<p>В системах ORM каждый класс отображается на таблицу в стандартной БД. Вместо того, чтобы писать большой код для взаимодействия с ней, ORM использует специальные команды. Разработчик сможет сосредоточиться на формировании грамотной логике системы.</p>
21
<p>В системах ORM каждый класс отображается на таблицу в стандартной БД. Вместо того, чтобы писать большой код для взаимодействия с ней, ORM использует специальные команды. Разработчик сможет сосредоточиться на формировании грамотной логике системы.</p>
22
<p>ORM (object relational mapper) - объектно-реляционное отображение или преобразование - технология разработки, которая связывает базы данных с концепциями ООП через создание виртуальной объектной БД.</p>
22
<p>ORM (object relational mapper) - объектно-реляционное отображение или преобразование - технология разработки, которая связывает базы данных с концепциями ООП через создание виртуальной объектной БД.</p>
23
<p>The SQLAlchemy помогает описывать the database и взаимодействовать с ними через The Python. SQL-запросы в программном коде писать не придется. Данный прием упрощает разработку. Он делает код более читабельным. With the SQLAlchemy об экранировании можно забыть. Это поможет защититься от SQL-инъекций (mapped).</p>
23
<p>The SQLAlchemy помогает описывать the database и взаимодействовать с ними через The Python. SQL-запросы в программном коде писать не придется. Данный прием упрощает разработку. Он делает код более читабельным. With the SQLAlchemy об экранировании можно забыть. Это поможет защититься от SQL-инъекций (mapped).</p>
24
<p>The SQLAlchemy в Python имеет следующие преимущества:</p>
24
<p>The SQLAlchemy в Python имеет следующие преимущества:</p>
25
<ul><li>ORM здесь можно не использовать - это необязательная концепция;</li>
25
<ul><li>ORM здесь можно не использовать - это необязательная концепция;</li>
26
<li>четко установленная архитектура;</li>
26
<li>четко установленная архитектура;</li>
27
<li>совместимость с SQL-запросами, написанными вручную;</li>
27
<li>совместимость с SQL-запросами, написанными вручную;</li>
28
<li>поддержка транзакций;</li>
28
<li>поддержка транзакций;</li>
29
<li>возможность формирования запросов через функции и выражения the Python;</li>
29
<li>возможность формирования запросов через функции и выражения the Python;</li>
30
<li>модульность и высокий уровень расширяемости;</li>
30
<li>модульность и высокий уровень расширяемости;</li>
31
<li>поддержка раздельного определения объектного отображения, а также классов;</li>
31
<li>поддержка раздельного определения объектного отображения, а также классов;</li>
32
<li>составные индексы;</li>
32
<li>составные индексы;</li>
33
<li>отношения между классами, включая "один ко многим" и "многие ко многим";</li>
33
<li>отношения между классами, включая "один ко многим" и "многие ко многим";</li>
34
<li>объекты, ссылающиеся сами на себя.</li>
34
<li>объекты, ссылающиеся сами на себя.</li>
35
</ul><p>The SQLAlchemy предусматривает предварительную и последующую обработку информации. При помощи соответствующего инструмента допускается использование разных СУБД.</p>
35
</ul><p>The SQLAlchemy предусматривает предварительную и последующую обработку информации. При помощи соответствующего инструмента допускается использование разных СУБД.</p>
36
<h2>Начало работы</h2>
36
<h2>Начало работы</h2>
37
<p>Чтобы воспользоваться рассматриваемым инструментом, его необходимо хотя бы поверхностно изучить. Эксплуатация программного обеспечения начинается с инициализации и настройки среды разработки. Эти элементарные операции должен знать каждый программист на Python.</p>
37
<p>Чтобы воспользоваться рассматриваемым инструментом, его необходимо хотя бы поверхностно изучить. Эксплуатация программного обеспечения начинается с инициализации и настройки среды разработки. Эти элементарные операции должен знать каждый программист на Python.</p>
38
<h3>Инициализация</h3>
38
<h3>Инициализация</h3>
39
<p>Установка of these instrument can be realized 3 способами:</p>
39
<p>Установка of these instrument can be realized 3 способами:</p>
40
<ol><li>С нуля. Для этого необходимо использовать setuptools. Для этого в консоли необходимо набрать такую команду:. После этого произойдет загрузка последней версии инструмента из Python Cheese Shop с последующей установкой на устройство.</li>
40
<ol><li>С нуля. Для этого необходимо использовать setuptools. Для этого в консоли необходимо набрать такую команду:. После этого произойдет загрузка последней версии инструмента из Python Cheese Shop с последующей установкой на устройство.</li>
41
<li>С официального сайта через установочный скрипт. Воспользоваться придется командой: .</li>
41
<li>С официального сайта через установочный скрипт. Воспользоваться придется командой: .</li>
42
<li>Через pip. В этом случае предстоит выполнить такой запрос: .</li>
42
<li>Через pip. В этом случае предстоит выполнить такой запрос: .</li>
43
</ol><p>Перед началом работы рекомендуется проверить версию библиотеки (она должна быть последней для корректного функционирования), а также правильность to the installing.</p>
43
</ol><p>Перед началом работы рекомендуется проверить версию библиотеки (она должна быть последней для корректного функционирования), а также правильность to the installing.</p>
44
<p>Рассматриваемый инструмент подходит для работы с реализацией DBAPI. Она необходима для корректной БД. Установленная библиотека использует систему диалектов для связи с различными типами реализаций DBALI и базами информаций. Для каждого из них необходимо предварительно устанавливать соответствующие драйверы.</p>
44
<p>Рассматриваемый инструмент подходит для работы с реализацией DBAPI. Она необходима для корректной БД. Установленная библиотека использует систему диалектов для связи с различными типами реализаций DBALI и базами информаций. Для каждого из них необходимо предварительно устанавливать соответствующие драйверы.</p>
45
<p>По умолчанию поддерживаются следующие диалекты:</p>
45
<p>По умолчанию поддерживаются следующие диалекты:</p>
46
<ul><li>Жар-птица (Firebird);</li>
46
<ul><li>Жар-птица (Firebird);</li>
47
<li>Microsoft SQL Server;</li>
47
<li>Microsoft SQL Server;</li>
48
<li>Oracle;</li>
48
<li>Oracle;</li>
49
<li>MySQL;</li>
49
<li>MySQL;</li>
50
<li>SQLite;</li>
50
<li>SQLite;</li>
51
<li>Sybase;</li>
51
<li>Sybase;</li>
52
<li>PostgreSQL.</li>
52
<li>PostgreSQL.</li>
53
</ul><p>При работе с рассматриваемым элементом в Python необходимо обратить внимание на язык выражений - Core.</p>
53
</ul><p>При работе с рассматриваемым элементом в Python необходимо обратить внимание на язык выражений - Core.</p>
54
<h3>SQLAlchemy Core</h3>
54
<h3>SQLAlchemy Core</h3>
55
<p>Ядро изучаемой библиотеки поддерживает:</p>
55
<p>Ядро изучаемой библиотеки поддерживает:</p>
56
<ul><li>ядро рендеринга SQL;</li>
56
<ul><li>ядро рендеринга SQL;</li>
57
<li>интеграцию DBAPI и транзакций;</li>
57
<li>интеграцию DBAPI и транзакций;</li>
58
<li>сервисы описания схем.</li>
58
<li>сервисы описания схем.</li>
59
</ul><p>Использует для функционирования язык выражений SQL. Он представлен системой структур и выражений реляционных БД с поддержкой конструкций Питона. В нем имеется система представления примитивных конструкций реляционных БД. В отличие от ORM предоставляет высокоуровневые абстрактные шаблоны (map) использования.</p>
59
</ul><p>Использует для функционирования язык выражений SQL. Он представлен системой структур и выражений реляционных БД с поддержкой конструкций Питона. В нем имеется система представления примитивных конструкций реляционных БД. В отличие от ORM предоставляет высокоуровневые абстрактные шаблоны (map) использования.</p>
60
<p>Язык выражений предоставляет примитивные конструкции the database напрямую. Он не зависит от серверной части. Охватывает все аспекты исходного SQL. SQLAlchemy Core ближе к сырому SQL, чем любой другой компонент библиотеки.</p>
60
<p>Язык выражений предоставляет примитивные конструкции the database напрямую. Он не зависит от серверной части. Охватывает все аспекты исходного SQL. SQLAlchemy Core ближе к сырому SQL, чем любой другой компонент библиотеки.</p>
61
<p>Операторы языка в Core переводятся in необработанные SQL-запросы через специальные механизмы. Далее будут представлены некоторые ключевые моменты, необходимые для работы с БД через рассматриваемое программное обеспечение.</p>
61
<p>Операторы языка в Core переводятся in необработанные SQL-запросы через специальные механизмы. Далее будут представлены некоторые ключевые моменты, необходимые для работы с БД через рассматриваемое программное обеспечение.</p>
62
<h3>Подключение к БД</h3>
62
<h3>Подключение к БД</h3>
63
<p>Для подключения for database необходимо использовать класс Engine. Он соединяет пул вместе с объектом and формирует источник подключения и поведения БД. Engine Objects создаются через функцию create_engine.</p>
63
<p>Для подключения for database необходимо использовать класс Engine. Он соединяет пул вместе с объектом and формирует источник подключения и поведения БД. Engine Objects создаются через функцию create_engine.</p>
64
<p>Она принимает БД в виде одного аргумента. Чтобы функция работала корректно в SQLAlchemy and ORM, база информации нигде не должна быть определена. Стандартная операция вызова отправляет URL в качестве первого позиционного аргумента. Обычно ей выступает строка, указывающая на диалект и аргументы соединения. Ниже - пример создания БД.</p>
64
<p>Она принимает БД в виде одного аргумента. Чтобы функция работала корректно в SQLAlchemy and ORM, база информации нигде не должна быть определена. Стандартная операция вызова отправляет URL в качестве первого позиционного аргумента. Обычно ей выступает строка, указывающая на диалект и аргументы соединения. Ниже - пример создания БД.</p>
65
<p>Если необходимо использовать данные from MySQL, используется запись:</p>
65
<p>Если необходимо использовать данные from MySQL, используется запись:</p>
66
<p>При использовании драйвера PyMySQL с MySQL потребуется указать в исходном коде такую строчку:</p>
66
<p>При использовании драйвера PyMySQL с MySQL потребуется указать в исходном коде такую строчку:</p>
67
<p>Функция create_engine вернет объект Engine. Вот важные методы этого класса:</p>
67
<p>Функция create_engine вернет объект Engine. Вот важные методы этого класса:</p>
68
МетодОписаниеConnect()Возвращает объект подключения SQLAlchemy and ORM.Execute()Выполняет all functions.Begin()Вернет диспетчер контекста, подключенный к соответствующей операции. Транзакция будет фиксироваться при успешном выполнении.Dispose()Удаляет пул соединенийDriver()Указывает название драйвера используемого диалектаTable_names()Метод для возврата списка всех имен таблиц. Распространяется на всю базу данных.Transactions()Обеспечивает выполнение функции в пределах заданной транзакции<p>Теперь можно использовать функцию create для формирования новой таблицы информации.</p>
68
МетодОписаниеConnect()Возвращает объект подключения SQLAlchemy and ORM.Execute()Выполняет all functions.Begin()Вернет диспетчер контекста, подключенный к соответствующей операции. Транзакция будет фиксироваться при успешном выполнении.Dispose()Удаляет пул соединенийDriver()Указывает название драйвера используемого диалектаTable_names()Метод для возврата списка всех имен таблиц. Распространяется на всю базу данных.Transactions()Обеспечивает выполнение функции в пределах заданной транзакции<p>Теперь можно использовать функцию create для формирования новой таблицы информации.</p>
69
<h3>Как создать таблицу</h3>
69
<h3>Как создать таблицу</h3>
70
<p>SQLAlchemy Core ORM формирует свои выражения для столбцов таблицы. Их объекты - это столбцы в базах данных, представленные TableObject. Метаданные включают в себя определения таблиц и связанных с ними объектов: триггеров, индексов и так далее.</p>
70
<p>SQLAlchemy Core ORM формирует свои выражения для столбцов таблицы. Их объекты - это столбцы в базах данных, представленные TableObject. Метаданные включают в себя определения таблиц и связанных с ними объектов: триггеров, индексов и так далее.</p>
71
<p>Объект MetaData - это набор объектов таблицы и связанных с ними конструкций. Включает в себя коллекцию элементов Table, а также необязательную привязку к Connection или Engine.</p>
71
<p>Объект MetaData - это набор объектов таблицы и связанных с ними конструкций. Включает в себя коллекцию элементов Table, а также необязательную привязку к Connection или Engine.</p>
72
<p>Конструктор класса MetaData может включать в себя параметры связывания и схемы, которые отсутствуют по умолчанию.</p>
72
<p>Конструктор класса MetaData может включать в себя параметры связывания и схемы, которые отсутствуют по умолчанию.</p>
73
<p>Для определения всех таблиц в каталоге метаданных используется конструкция Table. Она напоминает стандартный оператор SQL Create Table. Объект соответствующего класса - это таблица в БД. Его конструктор может принимать такие параметры:</p>
73
<p>Для определения всех таблиц в каталоге метаданных используется конструкция Table. Она напоминает стандартный оператор SQL Create Table. Объект соответствующего класса - это таблица в БД. Его конструктор может принимать такие параметры:</p>
74
НазваниеОписаниеMetadataОбъект метаданных, содержащий таблицуColumns (Столбцы)Один или несколько объектов класса Column<p>Объект столбца - это непосредственный столбец в таблице БД. Конструктор принимает имя, тип, а также иные параметры вроде primary_key и ограничений.</p>
74
НазваниеОписаниеMetadataОбъект метаданных, содержащий таблицуColumns (Столбцы)Один или несколько объектов класса Column<p>Объект столбца - это непосредственный столбец в таблице БД. Конструктор принимает имя, тип, а также иные параметры вроде primary_key и ограничений.</p>
75
<p>Данные столбцов в SQLAlchemy ORM будут сопоставляться as well типы информации, определенных заблаговременно. Вот несколько общих поддерживаемых вариантов:</p>
75
<p>Данные столбцов в SQLAlchemy ORM будут сопоставляться as well типы информации, определенных заблаговременно. Вот несколько общих поддерживаемых вариантов:</p>
76
<ul><li>логический;</li>
76
<ul><li>логический;</li>
77
<li>дата;</li>
77
<li>дата;</li>
78
<li>время и дата;</li>
78
<li>время и дата;</li>
79
<li>целочисленный;</li>
79
<li>целочисленный;</li>
80
<li>строки;</li>
80
<li>строки;</li>
81
<li>текстовые данные;</li>
81
<li>текстовые данные;</li>
82
<li>float;</li>
82
<li>float;</li>
83
<li>SmallInteger;</li>
83
<li>SmallInteger;</li>
84
<li>BigInteger.</li>
84
<li>BigInteger.</li>
85
</ul><p>Для корректного создания таблицы students в уже имеющейся базе колледжа необходимо использовать код такого типа:</p>
85
</ul><p>Для корректного создания таблицы students в уже имеющейся базе колледжа необходимо использовать код такого типа:</p>
86
<p>Функция create_all() будет использовать объект Engine для создания всех определенных объектов в таблице. После этого он сохранит сведения в качестве метаданных:</p>
86
<p>Функция create_all() будет использовать объект Engine для создания всех определенных объектов в таблице. После этого он сохранит сведения в качестве метаданных:</p>
87
<p>А вот полный код, позволяющий создать в SQLAlchemy ORM базу данных SQLite под названием college.db. Она будет включать в себя таблицу учеников:</p>
87
<p>А вот полный код, позволяющий создать в SQLAlchemy ORM базу данных SQLite под названием college.db. Она будет включать в себя таблицу учеников:</p>
88
<p>Для атрибута echo функции create_engine() установлено значение True. За счет этого консоль будет отображать фактически сформированный SQL-запрос для создания таблицы. Выглядит это так:</p>
88
<p>Для атрибута echo функции create_engine() установлено значение True. За счет этого консоль будет отображать фактически сформированный SQL-запрос для создания таблицы. Выглядит это так:</p>
89
<p>College.db создается в текущем рабочем каталоге. Для проверки правильности формирования соответствующего компонента допускается открытие БД через любой инструмент SQLite GUI. Пример - SQLite Studio.</p>
89
<p>College.db создается в текущем рабочем каталоге. Для проверки правильности формирования соответствующего компонента допускается открытие БД через любой инструмент SQLite GUI. Пример - SQLite Studio.</p>
90
<h3>SQL-выражения</h3>
90
<h3>SQL-выражения</h3>
91
<p>SQL-выражения создаются с поддержкой соответствующих методов объекта целевой таблицы. Пример - оператор INSERT. Он создается при помощи метода insert(). Выглядит соответствующий запрос так:</p>
91
<p>SQL-выражения создаются с поддержкой соответствующих методов объекта целевой таблицы. Пример - оператор INSERT. Он создается при помощи метода insert(). Выглядит соответствующий запрос так:</p>
92
<p>Результатом станет объект Insert, который можно проверить через функцию str(). Ниже - наглядный пример присваивания некоторых параметров: фамилии, имени, идентификатора учащегося.</p>
92
<p>Результатом станет объект Insert, который можно проверить через функцию str(). Ниже - наглядный пример присваивания некоторых параметров: фамилии, имени, идентификатора учащегося.</p>
93
<p>Метод values() помогает вставить значение в то или иное поле. Для этого используется шаблон:</p>
93
<p>Метод values() помогает вставить значение в то или иное поле. Для этого используется шаблон:</p>
94
<p>SQL-запрос, отображающийся в консоли Python при работе с SQLAlchemy, не будет показывать фактическое значение. В приведенном фрагменте им выступит "Karan". Вместо этого генерируется параметр связки. Он отображается в скомпилированной форме оператора.</p>
94
<p>SQL-запрос, отображающийся в консоли Python при работе с SQLAlchemy, не будет показывать фактическое значение. В приведенном фрагменте им выступит "Karan". Вместо этого генерируется параметр связки. Он отображается в скомпилированной форме оператора.</p>
95
<p>Точно так же работают update(), delete() и select(). За их создание отвечают выражения UPDATE, DELETE и SELECT соответственно.</p>
95
<p>Точно так же работают update(), delete() и select(). За их создание отвечают выражения UPDATE, DELETE и SELECT соответственно.</p>
96
<p><a>Здесь</a>представлен небольшой видео-урок по основам использования the SQLAlchemy. Лучше данный инструмент помогут изучить специализированные онлайн курсы.</p>
96
<p><a>Здесь</a>представлен небольшой видео-урок по основам использования the SQLAlchemy. Лучше данный инструмент помогут изучить специализированные онлайн курсы.</p>
97
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
97
<p>Интересует <a>Python</a>? Добро пожаловать на курс в Otus!</p>
98
98