sql >> Database >  >> RDS >> Mysql

Flask SQLAlchemy sluit MySQL-databaseverbindingen niet

Ik heb eindelijk een oplossing voor het bovenstaande probleem gevonden.

Ik heb het declaratieve model gebruikt dat is gedefinieerd in hier in plaats van de quickstart-documentatie voor Flask-SQLAlchemy te volgen die hier wordt gegeven .

De gewijzigde bestanden zijn als volgt:

db.py :

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine(DB_URI, convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
                                         autoflush=False,
                                         bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()

def init_db():
    import user
    Base.metadata.create_all(bind=engine)

main.py :

from db import init_db, db_session

init_db()

@app.teardown_appcontext
def shutdown_session(exception=None):
    db_session.remove()

user.py :

from sqlalchemy import Column, Integer, String
from data_models.db import Base
class User(Base):
    id = db.Column(Integer, primary_key=True)
    username = db.Column(String(80), unique=True, nullable=False)
    email = db.Column(String(120), unique=True, nullable=False)

Voor het zoeken naar records kunnen we ofwel User.query.filter_by().all() gebruiken of db_engine.execute() .

Om nieuwe gegevens in de database te schrijven, kunnen we het volgende gebruiken:

new_user_entry = User(username = "abc", email = "[email protected]")
db_session.add(new_user_entry)
db_session.commit()


  1. Dynamische SQL (EXECUTE) als voorwaarde voor IF-statement

  2. is het goed om decimale waarde op te slaan als varchar in mysql?

  3. Het aantal kolommen van mysql.proc is onjuist. Verwacht 20, gevonden 16. De tabel is waarschijnlijk beschadigd

  4. Mysqli voegt tabellen toe uit 2 verschillende databases