Python Forum
SQL Alchemy dynamic class - declarative_base losing attributes
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
SQL Alchemy dynamic class - declarative_base losing attributes
#1
Hi,

Based on below posts
- dynamic-schema
- Dynamic Class Creation in SQLAlchemy

I wanted to make similar thing in my project. I use declarative_base class for core ORM models stored in db_models.py, additionally depends on user settings I want to create and store dynamic classes in BASE._dec_class_registry (db_manage.py>LotteryDatabase>_initial_database>create_class_model) those dynamic classes vary depends on params combinations from games_config.py.
My problem is when the first create_class_model method is called it's correctly adding class to BASE._dec_class_registry, but when calling next one BASE "losing" first class and adding new one and so on. When BASE.metadata.create_all() is called all tables are created in schema, but I can't access this dynamic classes using LotteryDatabase>set_model_by_table_name.

I tried doing it with raw test example:

models.py

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Integer, Column

BASE = declarative_base()


class NewClass(BASE):

    __tablename__ = 'test'

    id = Column('id', Integer, primary_key=True)
test.py

from models import *
from sqlalchemy import create_engine

DB_ENGINE = 'sqlite:///my_db.db'


def main():

    engine = create_engine(DB_ENGINE)

    BASE.metadata.create_all(engine)

    input_params = {'__tablename__': 'test1',
                    'id': Column('id', Integer, primary_key=True)}

    _ = type('InputClass', (BASE,), input_params)

    model_params = {'__tablename__': 'test2',
                    'id': Column('id', Integer, primary_key=True)}

    _ = type('ModelClass', (BASE,), model_params)

    predict_params = {'__tablename__': 'test3',
                      'id': Column('id', Integer, primary_key=True)}

    _ = type('PredictClass', (BASE,), predict_params)

    BASE.metadata.create_all(engine)
All classes where created and added to BASE, so problem is with my code and I am missing something. Your fresh look would be very helpful!
Application is fully operational and including requirements.txt file for packages.

For better inside what I am talking about, step by step example using debug mode. (look image below)

I have rewrote code so all class attributes are stored in dictionary and then used in creating models.

-->>[Image: view?usp=sharing]
Reply


Messages In This Thread
SQL Alchemy dynamic class - declarative_base losing attributes - by mrdominikku - Jan-06-2020, 05:02 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
Question [solved] Classes, assign an attributes to a class not to instances.. SpongeB0B 4 1,078 May-20-2023, 04:08 PM
Last Post: SpongeB0B
  SQL Alchemy help to extract sql data into csv files mg24 1 1,952 Sep-30-2022, 04:43 PM
Last Post: Larz60+
  [Solved] Novice question to OOP: can a method of class A access attributes of class B BigMan 1 1,402 Mar-14-2022, 11:21 PM
Last Post: deanhystad
Question I am struggling with basic json library + sql alchemy w/ mariadb-connector json ->sql BrandonKastning 0 1,593 Mar-04-2022, 09:26 PM
Last Post: BrandonKastning
  Distinguishing different types of class attributes Drone4four 4 2,272 Feb-21-2022, 06:34 PM
Last Post: deanhystad
  Environment seems to keep losing references spacedog 2 1,984 Apr-23-2021, 07:36 PM
Last Post: spacedog
  Calls to Attributes of a Class SKarimi 3 3,544 Apr-22-2021, 04:18 PM
Last Post: SKarimi
  losing memory antioch 1 1,830 Jan-20-2021, 05:29 AM
Last Post: antioch
  Winning/Losing Message Error in Text based Game kdr87 2 3,112 Dec-14-2020, 12:25 AM
Last Post: bowlofred
  how to add class instance attributes from list 999masks 2 2,824 Jul-22-2019, 07:59 AM
Last Post: 999masks

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020