Hi guys, my app requires to create some extra tables at sign up, can i do this in pythonaanywhere or not?
This is the error i get when i try with my dynamic tables:
sqlalchemy.exc.PendingRollbackError: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (mysql.connector.errors.ProgrammingError) 1146 (42S02): Table 'Tanc$users.autocompletion_jvksrl' doesn't exist
2023-01-31 20:52:44,298: [SQL: INSERT INTO autocompletion_jvksrl (company_name, cui, email, trezo_name, cont_rc_436, cont_buget_stat, cont_constructii_rc_436, cont_tva) VALUES (%(company_name)s, %(cui)s, %(email)s, %(trezo_name)s, %(cont_rc_436)s, %(cont_buget_stat)s, %(cont_constructii_rc_436)s, %(cont_tva)s)]
2023-01-31 20:52:44,298: [parameters: {'company_name': 'Philips', 'cui': 'RO4123423', 'email': 'daniel_tanc@yahoo.com', 'trezo_name': 'Cluj', 'cont_rc_436': 'RO312312312312312', 'cont_buget_stat': 'RO42304023402304230', 'cont_constructii_rc_436': 'RO453290532495239', 'cont_tva': 'RO40234053204523'}]
This is my models.py:
login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = "login" login_manager.session_protection = "strong"
@login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) company_name = db.Column(db.String(100)) username = db.Column(db.String(100)) password = db.Column(db.String(100))
def __integer__(self):
return self.id
def get_model_history(state): DynamicBase = declarative_base(class_registry=dict())
class MyModel(DynamicBase, db.Model, UserMixin):
__tablename__ = 'history_{}'.format(state)
id = db.Column(db.BIGINT, primary_key=True, autoincrement=True)
company_name = db.Column(db.VARCHAR(200), nullable=False)
month = db.Column(db.VARCHAR(200), nullable=False)
datetime_sent = db.Column(db.VARCHAR(200), nullable=False)
sum_venituri = db.Column(db.VARCHAR(200), nullable=False)
sum_cheltuieli = db.Column(db.VARCHAR(200), nullable=False)
profit_luna = db.Column(db.VARCHAR(200), nullable=False)
profit_an = db.Column(db.VARCHAR(200), nullable=False)
sum_venituri_cifa_afaceri = db.Column(db.VARCHAR(200), nullable=False)
scl = db.Column(db.VARCHAR(200), nullable=False)
scv = db.Column(db.VARCHAR(200), nullable=False)
sa = db.Column(db.VARCHAR(200), nullable=False)
stc = db.Column(db.VARCHAR(200), nullable=False)
tvadp = db.Column(db.VARCHAR(200), nullable=False)
sumcontrbsal = db.Column(db.VARCHAR(200), nullable=False)
ivp = db.Column(db.VARCHAR(200), nullable=False)
totalpltstat = db.Column(db.VARCHAR(200), nullable=False)
value_single_row_tva_rec = db.Column(db.VARCHAR(200), nullable=False)
return MyModel
def get_model_autocompletion(state): DynamicBase = declarative_base(class_registry=dict())
class MyModel(DynamicBase, db.Model, UserMixin):
__tablename__ = 'autocompletion_{}'.format(state)
id = db.Column(db.BIGINT, primary_key=True, autoincrement=True)
company_name = db.Column(db.VARCHAR(200), nullable=False)
cui = db.Column(db.VARCHAR(200), nullable=False)
email = db.Column(db.VARCHAR(200), nullable=False)
trezo_name = db.Column(db.VARCHAR(200), nullable=False)
cont_rc_436 = db.Column(db.VARCHAR(200), nullable=False)
cont_buget_stat = db.Column(db.VARCHAR(200), nullable=False)
cont_constructii_rc_436 = db.Column(db.VARCHAR(200), nullable=False)
cont_tva = db.Column(db.VARCHAR(200), nullable=False)
return MyModel
On my localhost works great, it can be done or not? Thanks:)