2014-04-04 26 views
0

兩個模塊server.py和models.py位於同一個目錄中。我在運行create_all之前導入模型,但從不創建用戶表。我也嘗試將import models更改爲from models import User,結果相同。請幫我理解這裏發生了什麼。 Server.py:flask create_all不創建導入表

from flask import Flask 
from fileserver.filebutler import butler 
from flask.ext.sqlalchemy import SQLAlchemy 


app = Flask(__name__) 
app.register_blueprint(butler) 

app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://working_url' 
db = SQLAlchemy(app) 


def initialize_db(): 
    import models 
    db.create_all() 


if __name__ == '__main__': 
    initialize_db() 
    app.run(debug=True) 

models.py:

from sqlalchemy import Column, Integer, String 
from downloadr import db 


class User(db.Model): 
    __tablename__ = 'users' 
    id = Column(Integer, primary_key=True) 
    name = Column(String(50), unique=True) 
    email = Column(String(120), unique=True) 

    def __init__(self, name=None, email=None): 
     self.name = name 
     self.email = email 

    def __repr__(self): 
     return '<User %r>' % (self.name) 

回答

0

嘗試:

id = db.Column(db.Integer, primary_key=True) 
name = db.Column(db.String(50), unique=True) 
email = db.Column(db.String(120), unique=True) 
+0

謝謝你的建議!我從每個建模對象中刪除__tablename__行,這並沒有解決我的問題。對於我仍然搜索的解決方案:)。 – user819835

+0

這並不是刪除我得到的表名,而是添加了'db'。到列和類型部分。 –

+0

也要檢查 - 您在連接中指定的db用戶有權CREATE TABLE –

0

用途:

from models import * 

它在我的情況下正常工作(I」米不使用一個函數來初始化,只是2行if語句中的代碼)。