OK, I see. You're creating tables dynamically, and you want to be able to insert data into those tables.
I think it'll be easier to use SQLAlchemy Core for this, rather than the ORM. You can use reflection to load table definitions from the database. https://docs.sqlalchemy.org/en/14/core/reflection.html#reflecting-database-objects https://docs.sqlalchemy.org/en/14/core/tutorial.html#coretutorial-insert-expressions That would look something like this (completely untested): # if there's a chance multiple people can call this # at the same time, you'll need to add a lock around it def get_table(table_name): if table_name in meta.tables: return meta.tables[table_name] return Table(table_name, meta, autoload_with=db.session.connection()) table_name = request.form.get("varsayilanlar") table = get_table(table_name) insert = table.insert().values(**tablo) db.session.execute(insert) Simon On Wed, Mar 17, 2021 at 4:19 PM FURKAN bilgin <furkanblg...@gmail.com> wrote: > > I updated sqlalchemy and now I get an error when accessing the database. And > their codes need to be coded: > What I really wanted to do was add data to a table with json data in the / > main / write path. but now I get an error when I send / main / new-app post > request (I updated sqlalchemy and it happened) related codes are below > Sorry for taking your time, there may not be a solution. I am thinking of > rewriting the codes. > > > from sqlalchemy import MetaData, Table, Column, Integer, String, > create_engine, DateTime,VARCHAR > from flask import Flask, abort, render_template, request,session,jsonify > from flask_sqlalchemy import SQLAlchemy > from datetime import datetime > from sqlalchemy import text > import json > > meta = MetaData() > engine = create_engine('sqlite:////Users/dell/Desktop/2.2/db.db') > conn = engine.connect() > > app = Flask(__name__) > > app.config["SQLALCHEMY_DATABASE_URI"] = > 'sqlite:////Users/dell/Desktop/2.2/db.db' > db = SQLAlchemy(app) > > app.secret_key = "Lbgsa,pdsa_ıda)6Kyw%61" > > @app.route("/main/new-app",methods = ["GET","POST"]) > def new_app(): > if request.method == "GET": > return render_template("gg.html") > if application.query.filter_by(name = > request.form.get("username")).first(): > return "UserName..." > isim = request.form.get("username") > varsayilanlar = request.form.get("varsayilanlar") > d_varsayilanlar = json.loads(varsayilanlar).keys() > lis = [Column('id', Integer, primary_key = True),Column('date', DateTime, > nullable=False, default=datetime.now)] > for i in d_varsayilanlar: > lis.append(Column(i,VARCHAR(80))) > Table(isim, meta, *lis) > meta.create_all(engine) > new_app = application(name = isim, > password = request.form.get("password"), > anaSayfa = request.form.get("anaSayfa"), > manuelSayfa = > request.form.get("manuelSayfa"), > dinamikSayfa = > request.form.get("dinamikSayfa"), > varsayilanlar= > request.form.get("varsayilanlar"), > dinamik = > bool(request.form.get("dinamik")), > kitap = > bool(request.form.get("kitap")), > kalem = > bool(request.form.get("kalem"))) > db.session.add(new_app) > db.session.commit() > return "200OK" > > @app.route("/main/write",methods = ["GET","POST"]) > def write(): > if request.method == "GET": > return "POST!" > app = application.query.filter_by(name = > request.form.get("username")).first() > if not (app): > return "Uygulama Bulunamadı" > elif not(app.kalem) and (app.password != request.form.get("password")): > return "TABLE NOT FOUND" > tablo = json.loads(request.form.get("varsayilanlar")) > #i want to get table here > new_row = meta.tables[request.form.get("username")] > employee = new_row(**tablo) > db.session.add(employee) > db.session.commit() > return "200ok" > class application(db.Model): > id = db.Column(db.Integer,primary_key = True) > name = db.Column(db.String(80)) > password = db.Column(db.String(80)) > anaSayfa = db.Column(db.String(80)) > manuelSayfa = db.Column(db.String(80)) > dinamik = db.Column(db.String(80)) > dinamikSayfa = db.Column(db.String(80)) > varsayilanlar= db.Column(db.String(80)) > kitap = db.Column(db.String(80)) > kalem = db.Column(db.String(80)) > pub_date = db.Column(db.DateTime, nullable=False,default=datetime.now) > 17 Mart 2021 Çarşamba tarihinde saat 17:17:56 UTC+3 itibarıyla Simon King > şunları yazdı: >> >> I assumed you were defining classes corresponding to your database >> tables, as shown here: >> >> https://docs.sqlalchemy.org/en/14/orm/tutorial.html#declare-a-mapping >> >> If that's not how you're using SQLAlchemy, you'll have to show your code. >> >> Simon >> >> On Wed, Mar 17, 2021 at 2:07 PM FURKAN bilgin <furkan...@gmail.com> wrote: >> > >> > I think we keep it in RAM in the first method, so it may be a problem if >> > the program is restarted. and I guess I don't understand what you mean by >> > Base class. >> > 17 Mart 2021 Çarşamba tarihinde saat 14:27:31 UTC+3 itibarıyla Simon King >> > şunları yazdı: >> >> >> >> There are lots of ways of doing this. One option is to provide a >> >> dictionary when creating your declarative_base: >> >> >> >> classes = {} >> >> Base = declarative_base(class_registry=classes) >> >> >> >> Now you can look up classes by name in that classes dictionary: >> >> >> >> def get_table_by_name(name): >> >> return classes[name] >> >> >> >> Another option could be to iterate over Base.__subclasses__: >> >> >> >> def get_table_by_name(name): >> >> for cls in Base.__subclasses__(): >> >> if cls.__name__ == name: >> >> return cls >> >> >> >> Hope that helps, >> >> >> >> Simon >> >> >> >> On Tue, Mar 16, 2021 at 7:14 PM FURKAN bilgin <furkan...@gmail.com> wrote: >> >> > >> >> > table_name = "table_name" >> >> > >> >> > #get table as table >> >> > >> >> > new = table(**tablo) >> >> > db.session.add(table) >> >> > db.session.commit() >> >> > >> >> > -- >> >> > SQLAlchemy - >> >> > The Python SQL Toolkit and Object Relational Mapper >> >> > >> >> > http://www.sqlalchemy.org/ >> >> > >> >> > To post example code, please provide an MCVE: Minimal, Complete, and >> >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> >> > description. >> >> > --- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "sqlalchemy" group. >> >> > To unsubscribe from this group and stop receiving emails from it, send >> >> > an email to sqlalchemy+...@googlegroups.com. >> >> > To view this discussion on the web visit >> >> > https://groups.google.com/d/msgid/sqlalchemy/c3c7c369-7d7f-41b0-b6f3-273b6c76314dn%40googlegroups.com. >> > >> > -- >> > SQLAlchemy - >> > The Python SQL Toolkit and Object Relational Mapper >> > >> > http://www.sqlalchemy.org/ >> > >> > To post example code, please provide an MCVE: Minimal, Complete, and >> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full >> > description. >> > --- >> > You received this message because you are subscribed to the Google Groups >> > "sqlalchemy" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to sqlalchemy+...@googlegroups.com. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/sqlalchemy/1f98d725-f15f-4fde-9fe2-4205f71eb1d8n%40googlegroups.com. > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and > Verifiable Example. See http://stackoverflow.com/help/mcve for a full > description. > --- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sqlalchemy+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/20c81613-0794-4909-b353-200446d0a8a1n%40googlegroups.com. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/CAFHwexc8P%3D8gZotQh7A0eVpBLDZpMYLBR%2BFpyN_Y_JsMS%3DWDgw%40mail.gmail.com.