Ошибки в логике
Напишем простую программу на деление с остатком и сохраним как sample.py:
n = input()
m = input()
print(n % m)
и запустим её:
$ python3 sample.py
5
3
Traceback (most recent call last):
File "sample.py", line 3, in <module>
print(n % m)
TypeError: not all arguments converted during string formatting
Возникла ошибка TypeError, которая сообщает о неподходящем типе данных. Исправим программу:
n = int(input())
m = int(input())
print(n % m)
запустим на неподходящих данных:
$ python3 sample.py
xyz
Traceback (most recent call last):
File "sample.py", line 1, in <module>
n = int(input())
ValueError: invalid literal for int() with base 10: 'xyz'
Возникнет ValueError. Эту ошибку ещё можно воспринимать как использование значения вне области допустимых значений (ОДЗ).
Теперь запустим программу на числовых данных:
$ python3 sample.py
1
0
Traceback (most recent call last):
File "sample.py", line 3, in <module>
print(n % m)
ZeroDivisionError: integer division or modulo by zero
При работе с массивами нередко возникает ошибка IndexError. Она возникает при выходе за пределы массива:
$ python3
>>> L1 = [1, 2, 3]
>>> L1[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Что будет, если вызвать бесконечную рекурсию? Опишем её в программе endless.py
def noend():
print("Hello!")
noend()
noend()
Через некоторое время после запуска возникнет RecursionError:
Traceback (most recent call last):
File "endless.py", line 4, in <module>
noend()
File "endless.py", line 3, in noend
noend()
File "endless.py", line 3, in noend
noend()
File "endless.py", line 3, in noend
noend()
[Previous line repeated 993 more times]
File "endless.py", line 2, in noend
print("Hello!")
RecursionError: maximum recursion depth exceeded while calling a Python object.
При создании простого API с FastAPI с официальной документацией при тестированиии получается одна и та же ошибка.
pydantic.error_wrappers.ValidationError: 3 validation errors for Owner
response -> name
field required (type=value_error.missing)
response -> address
field required (type=value_error.missing)
response -> status
field required (type=value_error.missing)
После установки response_model=Owner
приводит к FastAPI для проверки ответа от post_owner(...)
маршрута. Скорее всего, conn.insert_record(...)
не возвращает ответ как модель Owner .
Для решения нужно следовать по алгоритму:
- Изменить
response_model
на подходящий - Удалять
response_model
Также мжно воспользоваться импортом из List
из typing
модуля:
from typing import List
затем изменения response_model=Owner
наresponse_model=List[Owner]