it-swarm.com.de

SQLALCHEMY_DATABASE_URI ist nicht festgelegt

Ich habe versucht, mit CURD mit Flask und SQLAlchemy zu arbeiten, aber Error während der Verbindung zur Datenbank zu erhalten.

Hier ist das Error-Protokoll. 

/usr/local/lib/python3.4/dist-packages/flask_sqlalchemy/__init__.py:819: UserWarning: SQLALCHEMY_DATABASE_URI not set. Defaulting to "sqlite:///:memory:".
  'SQLALCHEMY_DATABASE_URI not set. Defaulting to '
/usr/local/lib/python3.4/dist-packages/flask_sqlalchemy/__init__.py:839: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '

hier ist mein code & setup

# database.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
sqldb = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:[email protected]/myDbName"


# create app
def create_app():
    sqlDB = SQLAlchemy(app)
    sqlDB.init_app(app)
    sqlDB.create_all()
    return app

hier ist models.py

from ..database import create_app
sqldb = create_app()
#  Users Model
class Users(sqldb.Model):
    __table= 'users'
    id = sqldb.Column(sqldb.Integer, primary_key = True)
    db = sqldb.Column(sqldb.String(40))
    def __init__(self,email,db):
        self.email = email
        self.db = db
    def __repr__(self,db):
        return '<USER %r>' % self.db

hier ist die route.py

# Import __init__ file
from __init__ import app
import sys
# JSON 
from bson import dumps
# login
@app.route('/', methods = ['GET'])
def login():
    try:
        # import users model
        from Model.models import Users,sqldb
        sqldb.init_app(app)
        sqldb.create_all()
        getUser = Users.query.all()
        print(getUser)
        return 'dsf'
    except Exception as e:
        print(e)
        return "error." 
7
Kaushik Makwana

Sie müssen diese Zeile app.config['SQLALCHEMY_DATABASE_URI'] = "mysql..." wahrscheinlich vor der SQLAlchemy(app)-Instanz setzen.

Eine weitere Option ist, SQLAlchemy() ohne Parameter zu erstellen, die URI zu konfigurieren und schließlich SQLAlchemy anzuweisen, über sqldb.init_app(app) eine Verknüpfung mit Ihrer App herzustellen

Beachten Sie, dass es das ist, was Sie in Ihrer create_app-Funktion gemacht haben, aber Sie verwenden es nie?

11
B. Barbieri

Wie bei der obigen Antwort ändern Sie die Einstellung, wenn Sie sie auf diese Weise verwenden 

sqldb = SQLAlchemy(app)

zu 

sqldb = SQLAlchemy()
0
huangke