Модуль источников данных 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' не найден