🐍 Python  ·  20 вопросов  ·  ~50 мин  ·  ⏱ Таймер 50:00  ·  Средний  · 

Python и базы данных

Проверяет параметры запросов, транзакции, курсоры, модели данных и безопасное соединение. Задания связывают подключение с темами «Параметры SQL», «Транзакции» и «Слой данных»: придётся читать код, искать причину сбоя и выбирать решение по его поведению. Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Какой вариант защищает значение от SQL-инъекции?
Вопрос 2 из 20
Что должна сделать транзакция, если первое изменение прошло, а второе завершилось ошибкой?
Вопрос 3 из 20
Курсор уже выдал последнюю строку выборки. Что вернёт следующий `fetchone()` в этом граничном случае?
Python
import sqlite3

connection = sqlite3.connect(":memory:")
cursor = connection.cursor()
cursor.execute("CREATE TABLE items (id INTEGER, value TEXT)")
cursor.execute("INSERT INTO items VALUES (1, 'last')")
cursor.execute("SELECT value FROM items ORDER BY id")
first = cursor.fetchone()
second = cursor.fetchone()
print(second)
connection.close()
Вопрос 4 из 20
Предметные правила не должны зависеть от конкретного курсора. Какое проектное решение упростит тестирование и замену хранилища?
Вопрос 5 из 20
Что гарантирует контекст соединения sqlite3 — и чего не гарантирует?
Вопрос 6 из 20
Как выглядит именованный параметр в sqlite3?
Вопрос 7 из 20
Когда `executemany` уместнее цикла с отдельным commit после каждой строки?
Вопрос 8 из 20
Что даёт настройка `connection.row_factory = sqlite3.Row`?
Вопрос 9 из 20
Когда rollback уже не вернёт прежнее состояние?
Вопрос 10 из 20
Для чего нужен SAVEPOINT?
Вопрос 11 из 20
Как распознать проблему N+1?
Вопрос 12 из 20
Как интерфейс репозитория упрощает тестирование?
Вопрос 13 из 20
Список идентификаторов имеет заранее неизвестную длину. Какое исправление безопасно формирует условие `IN`?
Вопрос 14 из 20
Зачем веб-приложению пул соединений?
Вопрос 15 из 20
Что меняет режим autocommit?
Вопрос 16 из 20
Почему ленивое отношение ORM может неожиданно обратиться к базе в шаблоне или сериализаторе?
Вопрос 17 из 20
Почему долгую транзакцию опасно держать во время сетевого запроса к стороннему сервису?
Вопрос 18 из 20
Что должна обеспечивать миграция с новым обязательным полем на большой таблице?
Вопрос 19 из 20
Какой тип разумнее для точной денежной суммы, прочитанной из NUMERIC?
Вопрос 20 из 20
Две транзакции читают одну запись с `version = 4`, независимо вычисляют новое значение и затем сохраняют его. Как не потерять обновление одной из транзакций?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу