Всем привет. Делаю web app в телеграм. Бек пишу на django и с помощью django orm создаю таблицу:
from django.db import models
class Profile(models.Model):
user_id = models.BigIntegerField()
key = models.CharField(max_length=36, null=True)
name = models.CharField(max_length=64, null=True, blank=True)
user_name = models.CharField(max_length=32, null=True)
photo = models.CharField(max_length=120, null=True)
registration_date = models.DateField(auto_now_add=True, null=True)
Специфика моего проекта такова, что для работы с бд используется сразу и SQLAlchemy (для сбора данных внутри бота) и Django ORM (для сбора данных внутри web).
Вот, что я написал на алхимии:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, BigInteger, String, func, Date, Table
BaseModel = declarative_base()
profile_table = Table(
'account_profile',
BaseModel.metadata,
Column('id', BigInteger, primary_key=True),
Column('user_id', BigInteger, nullable=False),
Column('key', String(36), nullable=True),
Column('name', String(64), nullable=True),
Column('user_name', String(32), nullable=True),
Column('photo', String(120), nullable=True),
Column('registration_date', Date, server_default=func.now())
)
Я опускаю некоторые моменты в подключении к уже существующей таблице через алхимию, так как всё прошло удачно, однако на стороне бота есть какие-то проблемы. Это код с операциями:
from database.table import profile_table
from sqlalchemy.orm import sessionmaker
from sqlalchemy import update, insert
async def add_user_id(user_id, session_maker: sessionmaker):
_session_maker: sessionmaker = session_maker
async with _session_maker() as session:
async with session.begin():
await session.execute(insert(profile_table).values(user_id=user_id))
async def update_key(key, user_id, session_maker: sessionmaker):
_session_maker: sessionmaker = session_maker
async with _session_maker() as session:
async with session.begin():
await session.execute(update(profile_table).where(profile_table.user_id == user_id).values(key=key))
Дело в том, что как только начинает выполнятся вторая функция, появляется ошибка: AttributeError: 'Table' object has no attribute 'user_id'.
Мне не очень понятно почему так? Как может таблица не иметь атрибута user_id, если первая функция выполняется хорошо и в случае с ней user_id имеется?
Если кто-то знает как это решить, то помогите, пожалуйста.