4

我是开发应用程序的新手,我一直在尝试熟悉 Flask。我遵循他们的优秀教程并阅读了他们同样详细的文档来创建我的第一个使用 SQLite3 数据库的基本应用程序。

为了做到这一点,按照他们的指示,我导入了以下内容:

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 站点教程的命令访问数据库。我的印象是,在创建用户创建和管理自己帐户的应用程序时,我需要实现 MySQL 数据库。在这种情况下,我需要更改与数据库相关的代码的哪些方面?我确信使用这两个数据库之间存在很大差异,因此任何参考点——要遵循的教程建议或要阅读的文档——将不胜感激。

提前谢谢了。

4

1 回答 1

5

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

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

这是您当前代码的粗略翻译:

# ...

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:pass@localhost/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()

只是一个建议。

于 2012-11-06T04:31:46.890 回答