Модуль источников данных sql¶
В данном модуле содержатся классы и методы для выполнения локальных sql запросов
Список классов¶
- Dialect - Интерфейс создания sql-запросов к таблицам
- DialectExpression - Интерфейс исполнения sql-выражений
- DialectQuery - Интерфейс исполнения sql-запросов
- FeatureExpressionEvaluator
- FunctionFilter - Ограничения, накладываемые на набор функций
- FunctionInfo - Тип функции
- FunctionSet - Набор функций sql-диалекта
- NameDescribed - Описание функции
- OperatorFilter - Ограничения, накладываемые на набор операторов
- OperatorSet - Набор операторов sql-диалекта
- QueryResult - Результат запроса
- QueryTable - Таблица SQL запроса
- SimpleTableContext - Простой контекст таблиц
- SqlRuntime - Среда выполнения SQL запросов
- TableContext - Интерфейс контекста таблиц
- Type - Тип результата sql-выражения
Функции выполнения SQL запросов¶
Примечание
При вызове версий функций, не имеющих среду выполнения запросов
SqlRuntime
в качестве одного из своих параметров, будет произведена попытка ее получения из инициализированного ядра приложенияCore
axioma.core.sql.
remove
(query_text, context, runtime)¶Запрос типа «Удаление» (DELETE)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
количество удаленных записей
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполнения
axioma.core.sql.
remove
(query_text, context)¶Запрос типа «Удаление» (DELETE)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
количество удаленных записей
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполненияПример удаления данных из таблицы по условию¶try: query_delete = 'DELETE FROM world WHERE Грамотность < 10' res = remove(query_delete, context) print('Удалено записей {}'.format(res)) except RuntimeException as ex: print("Ошибка: %s" % ex)
axioma.core.sql.
select
(query_text, context, runtime)¶Запрос типа «Выборка» (SELECT)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
результат выполнения запроса
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполнения
axioma.core.sql.
select
(query_text, context)¶Запрос типа «Выборка» (SELECT)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблиц- Результат
результат выполнения запроса
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполненияПример использования¶# Страны с населением более 100 миллионов from axioma.core.sql import * # ... # table - Таблица 'world' # ... # создадим контекст context = SimpleTableContext(table) # SELECT query_text = "SELECT Страна FROM world WHERE Население>100000000" select_table = selectAsTable(query_text, context) result = select(query_text, context) print([feature.getAttribute("Страна") for feature in result.features]) # Вывод: # >>> ['Бангладеш', 'Бразилия', 'Китай', 'Индия', 'Индонезия', # 'Япония', 'Российская Федерация', 'Соединенные Штаты Америки']
axioma.core.sql.
selectAsTable
(query_text, context, runtime)¶Выполнить запрос к таблицам и получить результат в виде таблицы
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
таблица, представляющая результат запроса
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполнения
axioma.core.sql.
selectAsTable
(query_text, context)¶Выполнить запрос к таблицам и получить результат в виде таблицы
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблиц- Результат
таблица, представляющая результат запроса
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполненияПример использования¶# Запрос всех стран с названием 'Hungary' from axioma.core.sql import * # ... # table - Таблица 'world' # ... # создадим контекст context = SimpleTableContext(table) # SELECT AS TABLE query_text = "SELECT * FROM world WHERE country=\"Hungary\"" select_table = selectAsTable(query_text, context) print("Имя таблицы выборки: %s" % select_table.name()) print("Количество записей: %d" % len(select_table.allFeatures())) print("Количество атрибутов: %d" % len(select_table.attributeNames())) # Вывод: # >>> Имя таблицы выборки: Query # >>> Количество записей: 1 # >>> Количество атрибутов: 32
axioma.core.sql.
update
(query_text, context, runtime)¶Запрос типа «Изменение» (UPDATE)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
количество измененных записей
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполнения
axioma.core.sql.
update
(query_text, context)¶Запрос типа «Изменение» (UPDATE)
- Параметры
query_text (
str
) – текст запросаcontext (
TableContext
) – контекст таблицruntime (
SqlRuntime
) – среда выполнения запросов- Результат
количество измененных записей
- Тип результата
- Исключение
Runtime –
RuntimeException
- Ошибка времени выполненияИзменение данных в таблице¶try: query_update = 'UPDATE world SET Грамотность = 99 WHERE Континент = "Африка"' res = update(query_update, context) print('Изменено записей {}'.format(res)) table.commit() # Сохранение данных в файле except RuntimeException as ex: print("Ошибка: %s" % ex)Пример с демонстрацией исключения „Неизвестная колонка“¶from axioma.core.sql import * from axioma.common import RuntimeException # ... # context - Контекст таблиц, содержащий таблицу 'world' # ... try: query_text = 'UPDATE world SET {0}=\"{2}\" WHERE {0}=\"{1}\"'.format("a", "b", "c") res = update(query_text, context) except RuntimeException as ex: print("Ошибка: %s" % ex) # Вывод: # >>> Ошибка: Столбец 'a' не найден