美文网首页Python程序员联盟
使用Flasky-SQLAlchemy 管理数据库

使用Flasky-SQLAlchemy 管理数据库

作者: ltoddy | 来源:发表于2017-08-03 23:46 被阅读94次

使用Flasky-SQLAlchemy 管理数据库

本文主要解决那本《Flask Web开发 基于Python的Web应用开发实战》
这本书坑不少,书是挺好的,但是你会踩不少坑,导致你会有很多bug,即使你复制的源代码。

先来一段代码

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os


basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' +\
            os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
#app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)


@app.route('/')
def index():
    return "Hello world"


if __name__ == '__main__':
    app.run()

注意,我在app.config中有一行是打了注释的。
如果加了注释:效果如下:

它会显示一个warning。一个警告

如果那一行去掉注释,效果如下:


这样子警告就消失了。

接下来,为数据库建个表,简单起见,表中就两个字段,一个id,一个username,

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64))


@app.route('/')
def index():
    u = User(username='zhangsan')
    return u.username

看上去还可以。
再换个方式。真正把用户数据(就是那个变量u)添加到数据库去.

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import os


basedir = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' +\
            os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64))


@app.route('/')
def index():
    u = User(username='zhangsan')
    db.session.add(u)
    return User.query.filter_by(username='zhangsan').first().username


if __name__ == '__main__':
#    db.drop_all()
#    db.create_all()
    app.run()

注意看在最下面,注释的那两行,如果注释掉的话,你去运行,会出现一个500的错误


这是你仔细观察目录中的文件,多了一个名字叫:data.sqlite的文件,然后你去查看这个文件的内容,
你会发现里面什么都没有。
原因很简单,因为数据库的表你根本就还没有创建呢,所在在最下面if里面的两行,是为了创建表用的。
估计大多数人被这个坑了。

当我们把注释解除之后.


这个样子就有东西了。

所以总的来说,当你去按照那个书学习的时候,如果打开localhost:5000之后出现SQLAlchemy的Error的时候
,先去看看有没有那个.sqlite文件(一般都有),然后去看看里面有没有东西,如果没有请按照如下方式:

这里假设你的db变量所在文件为:manage.py

python3 manage.py shell

>>>from manage import db
>>>db.drop_all()
>>>db.create_all()

相关文章

  • 使用Flasky-SQLAlchemy 管理数据库

    使用Flasky-SQLAlchemy 管理数据库 本文主要解决那本《Flask Web开发 基于Python的W...

  • Mongo 数据库 简单使用

    要管理数据库,必须先开机,开机使用mongod --dbpath D:\mongodb\bin 管理数据库:mon...

  • 程序员需要学什么软件

    1. 数据库管理工具 MySQL,使用Navicat是针对数据库而研发管理工具,Navicat擅长于对数据库的管理...

  • Navicat Mac 版快捷键汇总

    NavicatMac是一款针对 Mac 系统数据库管理而研发的工具,可满足现今数据库管理系统的使用功能。巧妙地使用...

  • 数据库和SQL概述

    数据库的好处 实现数据持久化管理 使用完整的管理系统统一管理,易于查询 数据库的概念 DB 数据库(databas...

  • Linux就该这么学 | 第18章 部署数据库系统

    第18章:使用 MariaDB 数据库管理系统 本章学习内容有:介绍数据库以及数据库管理系统的理论知识;介绍 Ma...

  • 实验二 使用管理器图形界面创建与管理数据库和表

    一.实验目的: \1. 了解数据库对象。 \2. 掌握使用管理器图形界面创建数据库。 \3. 掌握使用管理器图形界...

  • mongoDB增删查改

    一、 数据库使用开启 mongodb 服务:要管理数据库,必须先开启服务,开启服务使用 mongod --dbpa...

  • django 的使用

    使用django创建项目 模型-数据库 迁移 运行项目 shell 操作数据库模型 后台管理添加后台管理账号: a...

  • MongoDB入门手册

    安装 使用 服务管理 管数据库 集合管理 文档管理 条件操作 索引管理 聚合管理 副集管理 分片管理 备份管理 监...

网友评论

    本文标题:使用Flasky-SQLAlchemy 管理数据库

    本文链接:https://www.haomeiwen.com/subject/kavmlxtx.html