2012-11-06 25 views
4

我是开发应用程序的新手,我一直在尝试熟悉Flask这样做。我遵循他们的伟大教程,并阅读他们同样详细的文档来创建我的第一个使用SQLite3数据库的基本应用程序。我需要为我的Flask python应用程序使用MySQL数据库做些什么改变?

要做到这一点,并按照他们的指示,我输入以下内容:

from __future__ import with_statement 
from contextlib import closing 

import sqlite3 
from flask import Flask, request, session, g, redirect, url_for, \ 
    abort, render_template, flash 

,并建立了具有下列配置数据库文件schema.sql

drop table if exists entries; 
create table entries (
    id integer primary key autoincrement, 
    title string not null, 
    text string not null 
); 

我访问数据库使用的命令再次来自Flask site tutorial。我的印象是,我需要在创建应用程序时创建和管理自己的帐户,而不是实现MySQL数据库。在这种情况下,我需要更改哪些与数据库相关的代码有关的内容?我确信在使用这两个数据库之间有相当大的区别,所以任何参考点 - 要遵循的教程建议或要阅读的文档 - 都将不胜感激。

非常感谢提前。

回答

5

我不会直接回答你的问题,而是我会给你一个很好的替代你当前的方法。

而不是使用SQL操作数据库,为什么不采取与SQLAlchemy的OOP方法?

这是你当前的代码的一个粗略的翻译:

# ... 

from flask.ext.sqlalchemy import SQLAlchemy 

app = Flask(__name__.split('.')[0]) 

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///path/database.db' 
#app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:[email protected]/database' 

db = SQLAlchemy(app) 

class Entry(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 
    title = db.Column(db.Text) 
    text = db.Column(db.Text) 

    def __init__(self, title, text): 
     self.title = title 
     self.text = text 

    def uppercase(self): 
     self.title = self.title.upper() 
     self.text = self.text.upper() 

注意如何将数据结构不依赖于数据库。只需更改一个配置字符串即可从SQLite切换到MySQL。

初始化数据库也很简单:

$ python -c "from your_app import db; db.create_all()" 

与数据库的工作更简单:

entry = Entry('test', 'entry') 
entry.uppercase() 

db.session.add(entry) 
db.session.commit() 

只是一个建议。

+0

非常感谢!这确实是一个简单的过渡。我会读你所描述的内容,包括你提供的内容,我感谢你注意到易于使用的开关,特别是如何初始化和使用数据库。 – zch

+0

@zch:没问题。一旦你把所有东西都放好,烧瓶就很有趣。祝你好运! – Blender

相关问题