Модуль источников данных sql

В данном модуле содержатся классы и методы для выполнения локальных sql запросов

Список классов

Функции выполнения SQL запросов

Примечание

При вызове версий функций, не имеющих среду выполнения запросов SqlRuntime в качестве одного из своих параметров, будет произведена попытка ее получения из инициализированного ядра приложения Core

axioma.core.sql.remove(query_text, context, runtime)

Запрос типа «Удаление» (DELETE)

Параметры:
  • query_text (str) – текст запроса
  • context (TableContext) – контекст таблиц
  • runtime (SqlRuntime) – среда выполнения запросов
Результат:

количество удаленных записей

Тип результата:

int

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

axioma.core.sql.remove(query_text, context)

Запрос типа «Удаление» (DELETE)

Параметры:
  • query_text (str) – текст запроса
  • context (TableContext) – контекст таблиц
  • runtime (SqlRuntime) – среда выполнения запросов
Результат:

количество удаленных записей

Тип результата:

int

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

Пример удаления данных из таблицы по условию
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) – среда выполнения запросов
Результат:

результат выполнения запроса

Тип результата:

QueryResult

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

axioma.core.sql.select(query_text, context)

Запрос типа «Выборка» (SELECT)

Параметры:
  • query_text (str) – текст запроса
  • context (TableContext) – контекст таблиц
Результат:

результат выполнения запроса

Тип результата:

QueryResult

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

Пример использования
# Страны с населением более 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) – среда выполнения запросов
Результат:

таблица, представляющая результат запроса

Тип результата:

QueryTable

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

axioma.core.sql.selectAsTable(query_text, context)

Выполнить запрос к таблицам и получить результат в виде таблицы

Параметры:
  • query_text (str) – текст запроса
  • context (TableContext) – контекст таблиц
Результат:

таблица, представляющая результат запроса

Тип результата:

QueryTable

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

Пример использования
# Запрос всех стран с названием '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) – среда выполнения запросов
Результат:

количество измененных записей

Тип результата:

int

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

axioma.core.sql.update(query_text, context)

Запрос типа «Изменение» (UPDATE)

Параметры:
  • query_text (str) – текст запроса
  • context (TableContext) – контекст таблиц
  • runtime (SqlRuntime) – среда выполнения запросов
Результат:

количество измененных записей

Тип результата:

int

Исключение:

RuntimeRuntimeException - Ошибка времени выполнения

Изменение данных в таблице
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' не найден