2017-01-03 18 views
1

Imは経由して私のアプリの設定(db_config.py)をインポートしようとして失敗している:作成フラスコSQLAlchemyのデータベースは

>>> from app.db_config import db_session 

'ImportError: No module named 'app.db_config'; 'app' is not a package

app.pyを受けたエラーは次のようになります。

import pymysql.cursors 
from flask import Flask, render_template, request 
from flask_migrate import Migrate 
from app.db_config import db_session 

#app setup 
app = Flask(__name__) 
app.config['DEBUG'] = True 
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/mydb' 
db = SQLAlchemy(app) 
migrate = Migrate(app, db) 
@app.teardown_appcontext 
def shutdown_session(exception=None): 
    db_session.remove() 

@app.route('/', methods=('GET', 'POST')) 
def index(): 
    return 'meow' 
if __name__ == '__main__': 
    app.run() 

db_config.py

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

engine = create_engine('mysql+pymysql://root:[email protected]/mydb', 
             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 app.db_table 
    Base.metadata.create_all(bind=engine) 

db_table.py

from sqlalchemy import Column, Integer, String, DateTime, Boolean 
from sqlalchemy.ext.declarative import declarative_base 
from app.db_config import Base 

Base = declarative_base() 

class Tld(Base): 
    __tablename__ = 'Tld' 
    id = Column(Integer, primary_key=True) 
    uri = Column(String(80), unique=True) 
    tmstmp = Column(DateTime()) 
    auth = Column(Boolean()) 

    def __init__(self, uri=None): 
     self.uri = uri 
     self.tmstmp = tmstmp 
     self.auth = auth 

私はここで間違って何をしているのですか?私はthis tutorialに従っていますが、期待した出力を受け取っていません。

私のapp.pyには何か問題があります。そのように呼び出すことはできません。それとも何か間違っていますか?

初めてalchemyユーザー

私はこれを自分で解決そんなに

+0

と言います。あなたのパッケージは 'app'という名前です。ここで名前の競合があります。モジュールの名前が 'app.py'であるので、Pythonはあなたのモジュールから' db_config'をインポートしようとします。モジュールの名前を変更してみてください( '__init __。py'を使用します)。 – MrLeeh

答えて

1

ありがとうございます。私はfrom db_config import db_sessionの代わりに、from app.db_config import db_session

関連する問題