2017-08-20 10 views
0

私はFlaskでPeeweeを使用しようとしていますが、なぜデータベース接続が機能しないのか分かりません。PeeweeとFlask: 'データベース'オブジェクトに属性 'commit_select'がありません

config.py

class Configuration(object): 
DATABASE = { 
    'name': 'test', 
    'engine': 'peewee.MySQLDatabase', 
    'user': 'root', 
    'passwd': 'root' 
} 
DEBUG = True 
SECRET_KEY = 'shhhh' 

APP/INITの.py

from flask import Flask 
from flask_peewee.db import Database 
app = Flask(__name__) 
app.config.from_object('config.Configuration') 
db = Database(app) 
import views,models 

APP/models.py

from peewee import * 
from . import db 
database = db 

class UnknownField(object): 
    def __init__(self, *_, **__): pass 
class BaseModel(Model): 
    class Meta: 
     database = database 

class Tbcategory(BaseModel): 
    insert_dt = DateTimeField() 
    name = CharField() 

    class Meta: 
     db_table = 'tbcategory' 

Iはpwizとmodels.pyを生成しました。

私はそれを対話型コンソールで使用しようとすると、タイトルにエラーが発生します。 models.pyの行をデータベース= dbから元のpwiz:

db = MySQLDatabase('test', **{'host': '127.0.0.1', 'password': 'root', 'user': 'root'}) 

に変更すると、すべて正常に動作します。私は私の人生でインターネット上の例を見つけることができません。どちらの設定もアプリケーション内にあるか、config.pyファイルの外にありますが、sqliteやその他のやや使い方が異なります。 flask_peeweeからDatabase()を使用してMySQLDatabaseを直接使用する必要はありませんか?設定で外部ファイルを使用するにはどうすればよいですか? あるメソッドでは127.0.0.1を使用し、もう一方のメソッドではホスト指定を使用しないことに注意してください。私はピューニーフラスコのウェブサイトからコピーをしました。

+0

が鳴ります。私は犯人を見つけたと思う - > 'app.config.from_object( 'config.Configuration')'。私はあなたがそのメソッドを文字列の代わりに設定オブジェクトに渡すことを意味すると思います。 –

+0

@WyattIsraelありがとう、しかし私はそれを2回チェックして、それは正しいです。私は文字列を渡さなければなりません。私はそれが読み込まれているかどうかを調べるためにタイプミスを試みました。文字列を使用すると、実際に読み込まれます。私は何が起こるかわからない。 – maugch

+0

間違った@WyattIsrael - 私のコメントを参照してください。 – coleifer

答えて

1

ラップオブジェクトはDatabaseです。実際のピーウィーのデータベースオブジェクトで取得するには、使用:

app.config.from_object('config.Configuration') 
db = Database(app) 
database = db.database # database is the actual peewee database obj. 

お使いのモデルのコードでは:あなたの設定が正しく処理されないように

from peewee import * 
from . import database # Import the actual peewee database 
+0

それは動作します!助けてくれてありがとう。 – maugch

関連する問題