Size: a a a

2021 April 23

AT

Alex Ted in Python Flask
сессии к БД не закрываешь/не отдаешь обратно в пул, как будто
источник

АТ

Алишер Тасанов... in Python Flask
да но в коде у меня сессия вот так создается
before request: создается сессия
и в teardown я сессию в
try:
бла бла бла
finally:
session.remove()
источник

АТ

Алишер Тасанов... in Python Flask
sqlalchemy
источник

АТ

Алишер Тасанов... in Python Flask
я предполагаю что как то перегружается запросами, потому что странно что запросы накапливаюстя и пачками выполняются.

Если проблема с количеством запросов, как можно это решить?
У меня на 1 один запрос создается 1 сессия
источник

V

Vladi in Python Flask
как создаёшь сессию?
и что выполняешь в "бла бла бла"
В теории логика верна, сессию в конце закрываешь
источник

АТ

Алишер Тасанов... in Python Flask
вроде создается вот так create_engine(url, pool_size, connect_args={'applicaiton_name':app_name})
источник

АТ

Алишер Тасанов... in Python Flask
под бла бла имею в виду там идет обработка экзепшнов, логирование "request finished in {} sec" и тд
источник

V

Vladi in Python Flask
в смысле?  каждый раз инициализируется create_engine при старте запроса?
источник

АТ

Алишер Тасанов... in Python Flask
а нет, там по созданной create_engine просто получается сессия (в коде еще сильно не разобрался)
источник

V

Vladi in Python Flask
дока кривая, но мне кажется ты намудрил с инициализацией
https://flask-russian-docs.readthedocs.io/ru/latest/patterns/sqlalchemy.html
без явного кода уже не подскажу
источник

АТ

Алишер Тасанов... in Python Flask
вот код:
DB_ENGINE[db_string] = create_engine(url, pool_size=pool_size, connect_args={'application_name': app_name})
DB_SESSION[db_string] = scoped_session(sessionmaker(bind=DB_ENGINE[db_string], autoflush=True))


во время создания он получает DB_SESSION[db_string]
источник

V

Vladi in Python Flask
если всё это в бефоре реквест, то работаешь неправильно с сессией, советую доку почитать
https://docs.sqlalchemy.org/en/14/orm/session_basics.html#using-a-sessionmaker, я объяснить подробнее под вечер смогу
источник

АТ

Алишер Тасанов... in Python Flask
Спасибо большое
источник

ВК

Владимир Кузовкин... in Python Flask
Коллеги,всех приветствую.

Очень нужна помощь в создании трёх таблиц в sqlalchemy. Сижу и туплю

Кто сможет за денежку помочь?
источник

V

Vladi in Python Flask
конкретно вопрос лучше бы
источник

ВК

Владимир Кузовкин... in Python Flask
Мне надо создать три таблицы, одна из них Closure Table.

class Closure_table_category(db.Model):
   tablename = 'Closure_table_category'
   topics = db.relationship('Topics')
   ancestor = db.Column(db.Integer, db.ForeignKey('topics.id'), primary_key=True)
   descendant = db.Column(db.Integer, db.ForeignKey('topics.id'), primary_key=True)
   depth = db.Column(db.Integer, nullable=False)


class Tasks(db.Model):
   tablename = 'tasks'

   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   task = db.Column(db.Text)

   topics = db.relationship('Topics')
   topics_id = db.Column(db.Integer, db.ForeignKey('topics.id'))


class Topics(db.Model):
   tablename = 'topics'

   id = db.Column(db.Integer, primary_key=True, autoincrement=True)
   name = db.Column(db.String(140))

   descendant = db.relationship("Tasks",
                                secondary=Closure_table_category,
                                back_populates='topics')

Я попытался это сделать,но у меня почему то нет связи
источник

ВК

Владимир Кузовкин... in Python Flask
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Closure_table_category.topics - there are multiple foreign key paths linki
ng the tables.  Specify the 'foreign_keys' argument
источник

ВК

Владимир Кузовкин... in Python Flask
вот такая ошибка
источник

V

Vladi in Python Flask
descendant = db.relationship("Tasks",
                                secondary=Closure_table_category,
                                back_populates='topics')

В ошибке явно написали, что много FK ключей (не знает с каким связать)
  ancestor = db.Column(db.Integer, db.ForeignKey('topics.id'), primary_key=True)
   descendant = db.Column(db.Integer, db.ForeignKey('topics.id'), primary_key=True)
с помощью foreign_keys пропиши в связи к какому ключу явно отсылка
источник

V

Vladi in Python Flask
https://docs.sqlalchemy.org/en/14/orm/join_conditions.html#handling-multiple-join-paths
твой случай использования нескольких FK на одну и туже сущность
источник