Как вставить строковые данные как перечисление в базу данных Postgres на PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как вставить строковые данные как перечисление в базу данных Postgres на Python

Сообщение Anonymous »

Я пытаюсь добавить данные типа String в базу данных postgresql на Python от Prisma. Столбец в базе данных определяется как определенный тип перечисления в схеме Prisma. Я попытался вставить с помощью сопоставления строк. Однако вставка не удалась из-за отсутствия поддержки типа String. Что мне делать?

Код: Выделить всё

from enum import Enum
from prisma import Prisma

db = Prisma()
os.environ['DATABASE_URL'] = ''
db.connect()

class DifficultyLevel(Enum):
EASY = 'EASY'
MEDIUM = 'MEDIUM'
HARD = 'HARD'
LUCK = 'LUCK'

def map_question_difficulty(generated_difficulty):
difficulty_mapping = {
'Easy': DifficultyLevel.EASY,
'Medium': DifficultyLevel.MEDIUM,
'Hard': DifficultyLevel.HARD,
'LUCK': DifficultyLevel.LUCK
}
return difficulty_mapping.get(generated_difficulty, DifficultyLevel.EASY).value  # Default to EASY if difficulty not found

async def insert_questions_to_db(questions):
try:
for question in questions:
db.elementgenerated.create(
data={
"difficulty": map_question_difficulty(question['difficulty'])
}
)
logging.info(f"Successfully inserted {len(questions)} questions into the database.")
except Exception as e:
logging.error(f"Error inserting questions into the database: {e}")
raise
Определение в схеме Prisma:

Код: Выделить всё

enum DifficultyLevel {
EASY
MEDIUM
HARD
}
Здесь программа дала отзыв: «prisma.errors.DataError: Ошибка преобразования поля «сложность» ожидаемого необнуляемого типа «String», обнаружено несовместимое значение «EASY».' Вопрос['difficulty'] представляет собой строковый объект, например «Легкий», «Средний» или «Сложный».

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»