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データベースを実装する必要があるという印象を受けています。この場合、データベース関連のコードについてどのようなことを変更する必要がありますか?これら2つのデータベースの操作にはかなり大きな違いがあると確信しているので、参照するポイント(従うべきチュートリアルの提案、または読むべきドキュメント)をいただければ幸いです。

よろしくお願いします。

4

1 に答える 1

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: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()

データ構造がデータベースに依存していないことに注意してください。1つの構成文字列を変更するだけで、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 に答える