2017-12-07 2 views
-1

Hallo. Wenn ich versuche neuen Rekord in Modell zu schaffen, ich bin immerPeewee Fehler auf model.create() [Proxy]

AttributeError: 'dict' object has no attribute 'compiler'

Möglich, dass ich diesen Fehler bin immer da mit Proxy-Klasse, kann aber nicht Fehler in meinem Code finden.

init Py

from flask import Flask 
from flask_peewee.db import Proxy 
from flask_bootstrap import Bootstrap 

from app.config import config_select 

db = Proxy() 
bootstrap = Bootstrap() 

def create_app(config_name): 
    app = Flask(__name__) 
    app.config.from_object(config_select[config_name]) 
    config_select[config_name].init_app(app) 

    db.initialize(config_select[config_name].DATABASE) 
    bootstrap.init_app(app) 

    #register blueprints 
    from app.blueprint.main import main_bp as main_blueprint 

    app.register_blueprint(main_blueprint) 


    return app 

models.py

from peewee import * 

from app import db 



class BaseModel(Model): 
    class Meta: 
     database = db 

class User(BaseModel): 
    id = PrimaryKeyField() 
    username = CharField(default='test', max_length=20) 

    class Meta: 
     db_table = 'users' 





MODELS_LIST = [User] 

Datenbank von Manager Befehl 'generate_db_tables' erstellt wurde

import os 
from app import create_app 


from flask_script import Manager, Shell 

app = create_app(os.getenv('FLASK_CONFIG') or 'default') 
manager = Manager(app) 



def connect_db(): 
    from peewee import SqliteDatabase 
    db_lite = SqliteDatabase(app.config['DATABASE']['name']) 
    return db_lite 

@manager.command 
def generate_db_tables(): 
    from app.models.models import MODELS_LIST 
    db_lite = connect_db() 
    for model in MODELS_LIST: 
     db_lite.create_table(model, safe=True) 
    print("Db tables created") 

und die View-Funktion:

Bevor ich begann, Proxy-Klasse zu verwenden, funktionierte alles wie ein Zauber.

Antwort

0

Es scheint, dass ich passieren dict

DATABASE = { 
    'name': 'test.db', 
    'engine': 'peewee.SqliteDatabase' 
} 

db.initialize()

statt string name der Datenbank

DATABASE_INFO = 'test.db' 
DATABASE = peewee.SqliteDatabase(DATABASE_INFO) 
db.initialize(DATABASE)