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
ユーザー)
私はこれを自分で解決そんなに
と言います。あなたのパッケージは 'app'という名前です。ここで名前の競合があります。モジュールの名前が 'app.py'であるので、Pythonはあなたのモジュールから' db_config'をインポートしようとします。モジュールの名前を変更してみてください( '__init __。py'を使用します)。 – MrLeeh