概要
Flaskで簡易的なアプリケーションを書籍を見ながら作っているところなのですが、作られるはずのデータベースファイルが作られないという事態に陥っています。以下のソースコードを書いた上でコンソールにて'python manage.py init_db'を実行すればflask_blog(二つのうち深い方)以下に'flask_blog.db'というファイルが作成されるとのことですが、何度試しても作成されません。原因は何処にあるのでしょうか。(この門題と直接関連していると思われるソースコードのみを添付致しました。)
現時点でのディレクトリ構造(dbファイルなし)
flask_blog
│ manage.py
│ Pipfile
│ Pipfile.lock
│ server.py
│
└─flask_blog
│ config.py
│ views.py
│ init.py
│
├─models
│ entries.py
│
├─scripts
│ │ db.py
│ │
│ └─__pycache__
│ db.cpython-36.pyc
│
├─templates
│ │ layout.html
│ │ login.html
│ │
│ └─entries
│ index.html
│
└─__pycache__
config.cpython-36.pyc
views.cpython-36.pyc
init.cpython-36.pyc
init.py
Python
1#flask_blog/__init__.py 2 3from flask import Flask 4from flask_sqlalchemy import SQLAlchemy 5 6app = Flask(__name__) 7app.config.from_object('flask_blog.config') 8 9app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 10 11db = SQLAlchemy(app) 12 13import flask_blog.views
manage.py
Python
1#manage.py 2 3from flask_script import Manager 4from flask_blog import app 5 6from flask_blog.scripts.db import InitDB 7 8if __name__ == '__main__': 9 manager = Manager(app) 10 manager.add_command('init_db', InitDB()) 11 manager.run() 12
db.py
Python
1#flask_blog/scripts/db.py 2 3from flask_script import Command 4from flask_blog import db 5 6class InitDB(Command): 7 def run(self): 8 db.create_all() 9 10
entries.py
Python
1#flask_blog/models/entries.py 2 3from flask_blog import db 4from datetime import datetime 5 6class Entry(db.Model): 7 __tablename__ = 'entries' 8 id = db.Column(db.Integer, primary_key=True) 9 title = db.Column(db.String(50), unique=True) 10 11 text = db.Column(db.Text) 12 created_at = db.Column(db.DateTime) 13 14 def __init__(self, title=None, text=None): 15 self.title = title 16 self.text = text 17 self.created_at = datetime.utcnow() 18 19 def __repr__(self): 20 return '<Entry id:{} title:{} text:{}>'.format(self.id, self.title, self.text) 21
エラー(警告)メッセージ
(flask_blog-qlFcXDbV) C:\Users\-----\-----\-----\flask_blog>python manage.py init_db C:\Users\-----.virtualenvs\flask_blog-qlFcXDbV\lib\site-packages\flask_sqlalchemy\__init__.py:813: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:". 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. '
### 補足
スクリプトを作成しない方法として、Pythonのインタラクティブモードでの実行を試しましたがうまくいっているのか分かりません。
C:\Users\-----\-----\-----\flask_blog>python Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> from flask_blog import db C:\Users\-----\Anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:814: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:". 'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. ' C:\Users\-----\Anaconda3\lib\site-packages\flask_sqlalchemy\__init__.py:835: 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 ' >>> db.create_all() >>> exit()
なお、SQLAlchemyやFlask-Scriptのインストールは書籍通りに行ったつもりですが、注意するべき点などございましたら教えて頂けると有難いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/16 21:45
2020/08/16 22:16
2020/08/18 20:27