2015-01-03 70 views
0

SQLAlchemy和由於某種原因,當我運行我的create_db.py只有遷移表被創建。 我試了一下蟒蛇終端與from modules import db,models然後運行db.create_all(),但它仍然給出了同樣的結果。Flask-SQLAlchemy不創建我的表

這是我的models.py

from __init__ import db 
from datetime import datetime 

class Batch(db.Model): 
    __tablename__='batch' 
    batch_id = db.Column(db.String, primary_key=True) 
    #total = db.Column(db.Integer) 
    success = db.Column(db.Integer) 
    failure = db.Column(db.Integer) 
    folder = db.Column(db.String(15)) 
    email = db.Column(db.String(20)) 
    detail = db.relationship('Conversion', backref='details',lazy='dynamic') 
    platform = db.relationship('Platform', backref='pub_data', lazy = 'dynamic') 

    def __init__(self,batch_id,success,failure,folder,email): 
     self.batch_id = batch_id 
     self.success = success 
     self.failure = failure 
     self.folder = folder 
     self.email = email 

class Conversion(db.Model): 
    __tablename__ = 'conversion' 
    id = db.Column(db.Integer, primary_key=True) 
    batch_id = db.Column(db.String,db.ForeignKey('batch.batch_id')) 
    file_names = db.Column(db.String) 
    status = db.Column(db.String(6)) 
    error = db.Column(db.Text) 
    res_prop = db.Column(db.Integer)   

    def __init__(self,batch_id,file_names,status,res_prop,error=None): 
     self.batch_id = batch_id 
     self.file_names = file_names 
     self.status = status 
     self.error = error 
     self.res_prop = res_prop 

class Platform(db.Model): 
    __tablename__ = 'platform' 
    id= db.Column(db.Integer,primary_key=True) 
    batch_id = db.Column(db.String, db.ForeignKey('batch.batch_id')) 
    title = db.Column(db.String) 
    pub_date = db.Column(db.DateTime) 

    def __init__(self,batch_id,title): 
     self.batch_id = batch_id 
     self.title = title 
     self.pub_date = datetime() 

這裏是我的create_db.py

from modules import models 
from modules import db 
from migrate.versioning import api 
from modules.default_config import SQLALCHEMY_DATABASE_URI , SQLALCHEMY_MIGRATE_REPO 
import os.path 

db.create_all() 
db.session.commit() 
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO): 
    api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository') 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) 
else: 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO)) 
+0

版本目錄中沒有文件?你有任何錯誤? –

+0

@OrDuan沒有錯誤。版本目錄只包含__init__.py沒有其他文件。雖然其他遷移文件創建時,我運行migrate.py –

+0

嘗試單獨導入模型(從模塊導入models.Batch - 或類似的東西) –

回答

2

在models.py改變

from __init__ import db 

from modules import db 

它的工作。 從外部包運行燒瓶應用程序時,需要從包本身導入所有內容,而不是單個模塊。