数据库与ORM
本文章是通过学习《网易云python全栈工程师》课程的笔记
- 关系型数据库:以文件方式永久存储到磁盘。
- 非关系型数据库:存储在内存,访问速度很快,通常用来做队列,缓存之类的服务。
sqlit是一个轻量的文本数据库,python自带,无需安装,也无需启动服务器
所有的关系型数据库都使用SQL语言对数据库进行CURD 操作**(创建,更新,读取,删除)**
ORM 对象与关系型数据库映射关系
SQLAlchemy是一款ORM具体实现的库
在flask中,可以使用flask_sqlalchemy插件
插件安装:pip install flask_sqlalchemy
from flask_sqlalchemy import SQLAlchemy
app = Flask(name)
#配置数据库
app.config[‘SQLALCHEMY_DATABASE_URL’]=“sqlite:///cms.db”
db = SQLAlchemy(app)
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
#新增配置,否则数据库会报警告
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
#配置数据库
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///my.db"
db = SQLAlchemy(app)
为了方便观察创建数据表的过程,可以安装SQLite管理模块
安装:pip install sqlite_web
这是一款通过web界面的方式管理数据库
安装后,使用:sqlite_web SQLite数据库文件路径,即可管理数据库
创建数据模型
自定义继承db.Model
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
username = db.Column(db.String)
password = db.Column(db.String)
realname = db.Column(db.String)
sex= db.Column(db.Integer)
mylike = db.Column(db.String)
city = db.Column(db.String)
intro = db.Column(db.String)
切记:Model首字母要大写
进入flask shell环境创建数据表
>>> from app import db
>>> db.create_all()
sqlite web查看数据库界面
sqlite_web my.db
保存数据
1、实例化模型对象
2、提交到数据库(db.session.add(user),db.session.commot())
切记mylike使用列表输出时getlist(),使用()而不是【】
if request.method == "POST":
realname = request.form['name']
username = request.form['username']
password = request.form['password']
sex = request.form['sex']
mylike = '|'.join(request.form.getlist('like'))
city = request.form['city']
intro = request.form['intro']
user = User(realname=realname,
username=username,
password=password,
sex=sex,
city=city,
intro=intro
)
db.session.add(user)
db.session.commit()