質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4847閲覧

Flaskでdbファイルが作成されない。

Teeca-Bakkers

総合スコア1

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/08/14 20:03

編集2020/08/14 20:06

概要

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のインストールは書籍通りに行ったつもりですが、注意するべき点などございましたら教えて頂けると有難いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージ

'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. '

から判断するとSQLALCHEMY_DATABASE_URIを設定すれば良いと思われます。flask_blog/flask_blog/init.pyというファイルに

python

1app.config.from_object('flask_blog.config')

という行がありますので、設定はflask_blog/flask_blog/config.pyの中に書かれていると思われます。そこに以下のような設定が必要となります。

python

1SQLALCHEMY_DATABASE_URI = 'sqlite:///flask_blog/flask_blog.db'

投稿2020/08/16 02:54

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Teeca-Bakkers

2020/08/16 21:45

ご回答ありがとうございます。ご指摘の通りconfig.pyの内容を追加致しましたところ、実行時に当初のエラーが表示されないようになりましたが、未だデータベースファイルは作成されない状況となっております。大変申し訳ございませんが、他に注意すべき点など思いつかれましたらお教え頂ければ幸いです。
yymmt

2020/08/16 22:16

エラーが出なくなったということですので、flask_blog.dbというファイルがどこか別のところに出来ている可能性があります。
Teeca-Bakkers

2020/08/18 20:27

ご指摘通りでした、詳しく教えて頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問