Артём
цитирую: "enumerate(iterable, start=0) - Возвращает итератор, при каждом проходе предоставляющем кортеж из номера и соответствующего члена последовательности."
Артём
нет функции Enum
Артём
и с большой буквы вообще классы называются
Tishka17
где?)
https://t.me/ru_python/939876
Артём
это был пример из доков sqlalchemy, которым руководствовался Андрей. И, судя по всему он немного неправильно там его применил у себя в коде, в результате чего у него код пытается создать столбец в БД с несуществующим типом "Role"
Андрей
именно так и делал
Tishka17
Ну вообще алхимия в зависимости от базы может по разному делать. Раньше, мне казалось, она создавала просто констрейнты
Андрей
class RoleEnum(enum.Enum): teamlead = 1 project_manager = 2 account_manager = 3 deleivery_manager = 4 class User(db.Model): tablename = 'g_user' id = db.Column(db.BigInteger(), primary_key=True) name = db.Column(db.String()) phone = db.Column(db.String()) user_role = db.Column(Enum(RoleEnum)) token = db.Column(db.String()) db - экземпляр Gino() В гино почему- то не нашлось Enum (с точки зрения алембика), вырвал из алхимии напрямую
Андрей
А какой Enum в описании модели юзаешь?
from app.extensions import db import enum from sqlalchemy.types import Enum
Андрей
чорт, импорты не по пепу
Tishka17
Хм. А постгресовый пробовал?
Tishka17
Из диалектов
Tishka17
The Enum type will make use of the backend’s native “ENUM” type if one is available; otherwise, it uses a VARCHAR datatype and produces a CHECK constraint. Use of the backend-native enum type can be disabled using the Enum.native_enum flag, and the production of the CHECK constraint is configurable using the Enum.create_constraint flag.
Артём
Tishka17
я переименовл
ты уверен что create_type тебе над оуказывать?
Андрей
ты уверен что create_type тебе над оуказывать?
уверен, что нет я на стэке нашел это, попробовал - разницы нет
Tishka17
а миграцию пересоздавал?
Екатерина
Добрый день! Ищу Python-developer (уровень middle/senior). Требования: опыт работы более 3 лет на крупных проектах в качестве разработчика. Python (стандартные библиотеки) Асинхронное программирование (будет плюсом). Условия: ЗП обсуждается с успешным кандидатом (от 180 и выше, белая) Оформление по ТК РФ ДМС Корпоративное обучение (тренинги, митапы, конференции) Отличный коллектив, отсутствие бюрократии. Офис в центре Москвы( работа только в офисе, удаленка не рассматривается). Иногородним - оплата квартиры на первые 2 недели. #работа #офис
Андрей
нашел вот что
Андрей
абсолютно такая же ошибка
Artemiy
Ребята вы самоучки? я тоже хочу питон выучить )
Tishka17
Ребята вы самоучки? я тоже хочу питон выучить )
научись правила читать сначала
Tishka17
нашел вот что
да, он и юзается автоматтом. я ж процитировал. Кажется у теюя не создается тип нужный
Андрей
да, он и юзается автоматтом. я ж процитировал. Кажется у теюя не создается тип нужный
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedObject) ОШИБКА: тип "user_role" не существует LINE 1: ALTER TABLE g_user ADD COLUMN user_role user_role ^ [SQL: ALTER TABLE g_user ADD COLUMN user_role user_role] Ну да Я и хочу выяснить почему :D
Артём
так у него стоит флаг create-type:false
Артём
как бы переводится - "создать-тип: нет"
Андрей
я уже убрад
Tishka17
я уже про это говорил
Артём
блин)) давай тогда обновленный код
Tishka17
кажется у алембика есть какие-то проблемы с енумами, но это не точно
Андрей
from app.extensions import db from sqlalchemy.dialects.postgresql import ENUM user_role = ENUM('teamlead', 'project_manager', 'account_manager', 'deleivery_manager', name='user_role') class User(db.Model): __tablename__ = 'g_user' id = db.Column(db.BigInteger(), primary_key=True) phone = db.Column(db.String()) user_role = db.Column(user_role) token = db.Column(db.String())
Tishka17
попробуй native_enum=False
Андрей
Андрей
Tishka17
да
Tishka17
в поле
Tishka17
а вообще хз
Андрей
nope не помогло
Андрей
Идентичная ошибка
Artemiy
а вообще хз
Простите, а что я такого спросил? мне что выучить питон нельзя?
Андрей
как и до этого
Андрей
исправил
Tishka17
nope не помогло
ты точно пересоздал миграцию?
Ivan
Для python есть, что то подобное https://github.com/App-vNext/Polly ?
Tishka17
то есть файл старой удалил, сгенерил заново?
Артём
конечно
https://stackoverflow.com/questions/52902162/flask-alembic-error-sqlalchemy-exc-programmingerror-psycopg2-programmingerror Посмотри комменты тут.
Артём
там предлагают зарыться в код миграции
Андрей
не понимаю, там решения нет
Артём
у чела та же проблема, но у него в коде миграции не добавлено это обновление. А так всё то же самое, алембики, ошибка создания типа.
Артём
ты также можешь использовать эти подсказки и посмотреть свой код миграции, может там не хватает как раз
Tishka17
конечно
файл миграции покажи
Андрей
файл миграции покажи
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.add_column('g_user', sa.Column('user_role', postgresql.ENUM('teamlead', 'project_manager', 'account_manager', 'deleivery_manager', name='user_role'), nullable=True)) # ### end Alembic commands ###
Tishka17
хм
Tishka17
где-то тут ещё создание типа должно быть
Андрей
руками его вписать?
Андрей
неужто алмбик не умеет этого
Tishka17
хз
Tishka17
https://stackoverflow.com/questions/14845203/altering-an-enum-field-using-alembic