2016-05-02 77 views
-2

我一直在使用Flask和SQLAlchemy,但我已經過渡到使用psycopg2插入並從我的數據庫返回值。我想知道我的Model.py和db對象中的類應該如何改變,因爲我不再使用SQLAlchemy。我甚至需要這些嗎?從SQLalchemy過渡到psycopg2

建立一個數據庫對象:

app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite') 
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True 
db.SQLALCHEMY(app) 

一類的樣本在我的模型文件:

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True) 
    email = db.Column(db.String(64), unique=True, index=True) 
    username = db.Column(db.String(64), unique=True, index=True) 
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) 
    zipAddress = db.Column(db.String(64)) 
+2

你意識到你既可以使用psycopg2,也可以使用SQLAlchemy執行原始查詢,對吧?至於實際的問題,你不會再使用SQLAlchemy模型,因爲你沒有使用SQLAlchemy。 – davidism

回答

0

據我瞭解,你想使用PostgreSQL,而不是sqlite的吧?如果是,那麼你只需要更改SQLALCHEMY_DATABASE_URI = 'postgresql uri這就是它。 已經如果你不想使用它,那麼你需要設置你的psycopg2 設置。但我建議使用SQLAlchemy。您可以繼續使用posgresql保存數據,如果您想繼續使用sqlalchemy,則無法刪除該文件(Models.py)和db實例。 使用sqlalchemy,您可以輕鬆地對錶格進行更改,並根據需要添加新表格。 而最後一件事它並不意味着你在使用sqlalchemy時不能使用postgresql。 SQLalchemy只是一個框架,並使代碼庫的作品爲sqlite,mysql,postgresql所有那些你只需要改變DATABASE_URI然後它會爲你創建表。 我建議檢查flask-sqlalchemy

+0

那就對了。我不確定是否應該繼續使用SQLAlchemy,因爲我已經創建了我的postgres表。我知道SQLAlchemy基於Model.py中的類創建數據庫,那麼該文件是否已經是必需的了?如果我沒有使用SQLAlchemy,還有一個用於創建數據庫對象的目的嗎? – Brosef

+0

謝謝你。如果我將它與postgresql和psycopg2一起使用,SQLAlchemy提供的主要好處是什麼。 – Brosef

+0

@Brosef SQLAlchemy是一個更復雜的軟件層,它會帶來更多的複雜性。把它扔掉並使用適當的SQL。 –