python - 我的 Flask python 应用程序需要进行哪些更改才能使用 MySQL 数据库?

标签 python mysql sqlite flask

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

非常感谢。

最佳答案

我不会直接回答您的问题,但我会为您提供一个替代当前方法的不错选择。

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

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

# ...

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

只是一个建议。

关于python - 我的 Flask python 应用程序需要进行哪些更改才能使用 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244314/

相关文章:

python - 从 Visual Studio Code powershell 运行 Anaconda 命令

mysql查询涨价幅度最大的商品

mysql每天从8小时内选择结果

PHP/Mysql 表单带有更多复选框,其中一些弹出问题重复

java - 需要有关 Android 中数据库访问的帮助

c# - ASP.NET 集成测试 - TestDrive.net 不会运行它们,其他测试运行者会

sqlite - 将 Postgres Server 数据库同步到 Sqlite Client 数据库

python - 如何对一项进行排序以匹配另一项,但在其他地方应用该排序?

android - 如何在 Windows 上从 kivy 创建 .apk 文件

python - 为什么在该可哈希对象的集合中找不到我的可哈希对象,该集合是另一个对象的属性?