HTML Diff
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