问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

flask创建数据库需要手动执行吗

发布网友 发布时间:2022-05-01 13:25

我来回答

2个回答

懂视网 时间:2022-05-01 17:46

我们将使用 Flask-SQLAlchemy扩展来管理我们应用程序的数据。这个扩展封装了SQLAlchemy 项目,这是一个 对象关系映射器 或者 ORM。ORMs 允许数据库应用程序与对象一起工作,而不是表以及 SQL。执行在对象的操作会被 ORM 翻译成数据库命令。

通常,我们如果建立数据库不当或者有需要增加我删除的东西,我们将会删除以前的数据库重新创建数据库,但在flask中,我们可使用SQLAlchemy-migrate来跟踪数据库的更新。

在此程序中,我们将采用 sqlite 数据库。sqlite 数据库是小型应用的最方便的选择,每一个数据库都是存储在单个文件里。

下面让我们来开始将它应用到我们的程序中去。

一、配置

1.添加新的配置到配置文件config.py中

技术分享

SQLALCHEMY_DATABASE_URI 是 Flask-SQLAlchemy 扩展需要的。这是我们数据库文件的路径。

SQLALCHEMY_MIGRATE_REPO 是文件夹,我们将会把 SQLAlchemy-migrate 数据文件存储在这里。

2.我们初始化数据库在microplog.py

技术分享

3.数据库模型的创建

(1)我们首先创建用户user表,我们创建三个字段在这个表里,包括 id,nickname,email,我们确定了用户表后,将它转换成代码

技术分享

(2)我们再建立一个posts表,用来描述一个用户所写的blog,一个post表里面有四个字段,包括id,timestamp,body,user_id,我们确定了posts表后,将它转换成代码

技术分享

注:(1)一个用户可以写多篇blog,所以我们将用户id作为posts表的外键。

  (2)我们已经在 User 类中添加一个新的字段称为 posts,它是被构建成一个 db.relationship 字段。这并不是一个实际的数据库字段。对于一个一对多的关系,db.relationship 字段通常是定义在“一”这一边。在这种关系下,我们得到一个 user.posts 成员,它给出一个用户所有的 blog。

  (3)字段是被作为 db.Column 类的实例创建的,db.Column 把字段的类型作为参数,并且还有一些其它可选的参数,比如表明字段是否唯一。

  (4)__repr__ 方法告诉 Python 如何打印这个类的对象。我们将用它来调试。

4.创建数据库

我们在上面已经把模型创建好了,下面我们开始创建数据库。flask-SQLAlchemy通过运行脚本来创建数据库,所以我们在这里编写脚本(db_create.py)

技术分享

创建好之后我们运行python db_create.py,我们可以看到它会自动生成一个microblog.db的文件。同时还会生成一个文件夹db_repository,里面还有一些文件,这是 SQLAlchemy-migrate 存储它的数据文件的地方。

5.数据库的迁移

数据库的迁移也是通过运行脚本来实现迁移的,这里我们创建一个脚本文件db_migrate.py

技术分享

创建好之后我们开始运行python db_migrate.py (注:此时我们将会看到有关SQLALCHEMY_TRACK_MODIFICATIONS的一个警告,我们只要在microblog.py中添加这样一句话就行了app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS‘] = True)

SQLAlchemy-migrate 迁移的方式就是比较数据库,两者间的不同将会被记录成一个迁移脚本存放在迁移仓库中。迁移脚本知道如何去迁移或撤销它,所以它始终是可能用于升级或降级一个数据库。为了以防万一尽量在备份的前提下去迁移数据库。

技术分享

6.pycharm连接到数据库,以便更好地管理数据库

点击右边的database-》+-》DataSource-》sqlite-》找到项目中前面生成的microblog.db作为文件-》test connection-》ok

技术分享

技术分享

7.下面我们可以尝试在python控制台进行数据增和删

技术分享

 

flask_数据库

标签:技术分享   删除   行数据   初始化   成员   迁移数据   包括   config   程序   

热心网友 时间:2022-05-01 14:54

python3下用flask-sqlalchemy对mysql数据库操作案例:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
db = SQLAlchemy(app)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)

def __init__(self, username, email):
self.username = username
self.email = email

def __repr__(self):
return '<User %r>' % self.username

admin = User('admin', 'admin@example.com')

db.create_all() # In case user table doesn't exists already. Else remove it.

db.session.add(admin)

db.session.commit() # This is needed to write the changes to database

User.query.all()

User.query.filter_by(username='admin').first()
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? 企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 唐山附近有好玩的地方吗? 国庆节我们一家人想要出去玩,不知道唐山周围有什么好玩的地方,还有值得去的地方。 周末从北京去河北玉田,沿途路过的地方有什么好玩的,急等,谢谢 从玉田到青岛威海蓬莱跟团都有什么好玩儿的地方 农村合作银行卡预留手机号码怎么修改 唐山有什么好玩的地方,想领孩子。 新买的戴尔笔记本电脑,打开后卡住了鼠标不动,按任何键都没有反应,按... 农村商业办卡时预留的手机号怎么改 唐山都有什么好玩的地方? 农村商业银行怎么更改预留的手机号码啊? 农村信用社的卡可以去农村商业银行改手机预留号码吗? 唐山有什么适合小孩子玩的景点吗 玉田大燕口红叶谷怎么样? 在玉田相聚,想问下有什么好玩的地方 玉田娱乐推荐,玉田有什么好玩的地方,玉田娱乐攻略 玉田有哪些玩的地方? 一个关于韩国料理的问题 织外套用粗线好还是细线好? 这是什么植物?叶子有点像美人蕉但是不开叉。根部像生姜但是,是苦的还有一股中草药味。 粗毛线织一件开衫毛衣140斤人穿的要起多少针后面一快? voox口红是什么牌子 VOOX口红贵吗? 个人独资企业需要汇算清缴吗? 西门子蒸箱蒸鸡蛋糕几分钟 英雄联盟的整局回放不能用了吗,不管去网吧还是在家里,点了都不可用? 个人独资企业的小规模纳税人还需不需要进行企业所得税汇算清缴? 个人独资企业年终报所得税时,也需要汇算清缴吗 可儿娃娃百褶裙怎么做 个人独资企业所得税年终要汇算清缴吗? 我17岁请问可以办理哪个银行的信用卡? 个人独资企业是否需要企业所得税汇算清缴 男生/女生穿和风衣服很合身是一种怎样的体验? 17岁就可以办信用卡的银行有哪些? 求纸花折法, 宝姿有什么明星同款的半裙吗? 苹果面粉蛋搅拌煎巴巴可和:纯牛奶同吃吗? 纯牛奶面粉鸡蛋能做什么 QQ现在更新了 有什么办法可以在群里被禁言了还能发信息的方法吗 如何无视QQ禁言发消息? 16进制转换成时间,现在收到的时间格式为07:df:0a:07:10:0c:32:00,如何将其转换成时间