2017-04-18 4 views
3

기본 CURD 작업으로 시작하는 학습 플라스 크 웹 프레임 워크를 봤습니다. 하지만 언제 SQLAlchemy를 사용하여 MySQL 데이터베이스에 연결하려고합니다. 하지만 & 설정 내 코드를 다음과 같은 오류가 여기SQLALCHEMY_DATABASE_URI 설정되지 않았습니다.

/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 ' 

입니다 주어진 여기

# 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 

여기

from ..database import create_app 
sqldb = create_app() 
# Users Model 
class Users(sqldb.Model): 
    __tablename__ = '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 

이 routes.py입니다 models.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." 

답변

4

SQLAlchemy(app) 인스턴스 전에이 줄을 app.config['SQLALCHEMY_DATABASE_URI'] = "mysql..."에 입력해야 할 수도 있습니다.

또 다른 옵션은 URI를 구성하고, 마지막으로 당신이 당신의 create_app 기능에서 한 일이라고 sqldb.init_app(app)

주를 통해 앱을 연결 SQLAlchemy에게, parametters없이 SQLAlchemy()를 만드는 것입니다,하지만 결코 그걸 써 ?

+0

감사합니다. @B. Barbieri :) 이제 오류가 사라졌지 만 새로운 오류가 발생했습니다. sqlalchemy 확장이 현재 응용 프로그램에 등록되지 않았습니다. 먼저 init_app()를 호출하십시오. –

+0

수입이 꽤 혼란 스럽기 때문에 이것이 어디에서 왔는지는 명확하지 않습니다.이'create_app' 함수를 제거하고'database.py'에서 모든 수입을 만들어야합니다 : 완전하게 구성되기 전에'sqldb'를 사용하려고합니다. –

관련 문제