今回FlaskとFlask-SQLAlchemmyとSQLite3を使ってデータを六つほど格納したDBを作ろうとしましたが、始めからデータを与えられた状態のdbを作るやり方が分からず二日ほど苦戦しています
#試したこと
ならばデータが空の状態でのdb(ramen_suki.db、モデル名はShop,テーブル名はshops)を作り、後から操作して目的のデータを入れ込もうと思い何とかramen_suki.dbまでの作成には至れたものの、
>>> enter = Shop('ラーメン', '11', '15', '17', '21', '11', '15','こってり') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __init__() takes 1 positional argument but 9 were given (コマンドプロンプト上のpythonモードで行いました・pipenvの仮想環境下で作業しています))
と設定した覚えのない_init_()の位置引数の関係で何故かエラーが出てしまいました(モデル定義の時に_init_()を定義することもあるそうですが、そのことでしょうか・・・私は定義しませんでした。それを使えばデータがは入った状態でdb作成ができたのかもしれませんが、いくら調べても目的の情報が見つからなかったので諦めました)
最期に
SALAlchemyの初期設定を行った_init_.pyとconfig.py,モデルの定義を行ったshops.pyとデータベースへの反映に使ったスクリプトファイルdb.py,それを実行するために書いたmanage.pyを下に載せておきます
よろしくお願いいたします
python
1#ramen_suki/_init_.py 2from flask import Flask 3from flask_sqlalchemy import SQLAlchemy 4 5app = Flask(__name__) 6app.config.from_object("ramen_suki.config") 7 8db = SQLAlchemy(app) 9 10 11import ramen_suki.views
python
1#ramen_suki/config.py 2DEBUG=True 3SQLALCHEMY_DATABASE_URI = 'sqlite:///ramen_suki.db' 4SQLALCHEMY_TRACK_MODIFICATIONS = True 5SECRET_KEY='\xe0KZ\xf8\x0f=\xa6<V\x07d\x8d\x9dv\xe6\x1f\x884\xe8\xdaX\x83v\xd9' 6
python
1#remen_suki/models/shops.py 2from ramen_suki import db 3 4 5class Shop(db.Model): 6 7 __tablename__ = 'shops' 8 9 id = db.Column(db.Integer, primary_key=True) 10 11 name = db.Column(db.String(50), unique=True) 12 13 mo_open = db.Column(db.Integer) 14 15 mo_close = db.Column(db.Integer) 16 17 af_open = db.Column(db.Integer) 18 19 af_close = db.Column(db.Integer) 20 21 mid_open = db.Column(db.Integer) 22 23 mid_close = db.Column(db.Integer) 24 25 explanation = db.Column(db.Text) 26
python
1#ramen_suki/scripts/db.py 2from flask_script import Command 3 4from ramen_suki import db 5 6 7 8 9 10class InitDB(Command): 11 12 "create database" 13 14 15 16 def run(self): 17 18 db.create_all() 19 20
python
1#ramen_suki/manage.py 2from flask_script import Manager 3 4from ramen_suki import app 5 6 7 8from ramen_suki.scripts.db import InitDB 9 10 11 12 13 14if __name__ == "__main__": 15 16 manager = Manager(app) 17 18 manager.add_command('init_db', InitDB()) 19 20 manager.run() 21
回答1件
あなたの回答
tips
プレビュー