青岛网站搭建公司,湛江网站建设外包,响应式网站手机端尺寸,陕西建设网站一、链接数据库
我们选择的框架是flask-sqlAlchemy 这个框架是对pymysql的封装。 连接数据库
#导入包
from flask_sqlalchemy import SQLAlchemy
#创建flask app对象
app Flask(__name__)
#设置配置信息
HOSTNAME localhost
PORT 3306;
USERNAME root Flask(__name__)
#设置配置信息
HOSTNAME localhost
PORT 3306;
USERNAME root;
PASSWORD 密码xxxxx;
DATABASE flask_test;
app.config[SQLALCHEMY_DATABASE_URI] fmysqlpymysql://{USERNAME}:{PASSWORD}{HOSTNAME}:{PORT}/{DATABASE}?charsetutf8;#这里自动读取的配置就是SQLALCHEMY_DATABASE_URI这个配置。--利用配置创建数据库对象
db SQLAlchemy(app)这里就已经脸上数据库了
二、创建表
这里是继承db.Model这个类上的方法等。
class User(db.Model):__tablename__ User;id db.Column(db.Integer,primary_key True,autoincrement True); #主键id 自增常# varcharusername db.Column(db.String(32),nullable False);password db.Column(db.String(128),nullable False);create_time db.Column(db.DateTime);def __repr__(self): #设置输出打印格式return Role:%s,%s % (self.id, self.username)三、数据库表的增删改查操作
增
三步 1、首先在python中先创建好相关对象。 --前面已经创建了数据库表类 2、将ORM对象添加到db.session会话中这个数据库中你打开的一个文件也是一个会话。 3、将db.session中的改变同步到数据库中。
app.route(/user/add)
def add_user():# 1. 创建ORM对象user User(usernameCarling,password Carlingisking!,create_time datetime.now());# 2. 将ORM对象添加到db.session中db.session.add(user);# 3. 将db.session中的改变同步到数据库中db.session.commit();return 用户创建成功;删
根据id删除也是要先拿到数据记录再删除
app.route(/user/delete)
def delete_user():# 1. 查找user User.query.get(1)# 2. 从db.session中删除db.session.delete(user)# 3. 将会话中的修改保存到数据库中db.session.commit();return 数据删除成功;改
先拿到再改
app.route(/user/update)
def update_user():user User.query.filter_by(username 法外狂徒张三).first();user.password 22222;db.session.commit();return 数据修改成功;查
app.route(/user/query)
def query_user():# 1. get查找根据主键查找user User.query.get(1)# 2. filter_by查找# Queryusers User.query.filter_by(username 法外狂徒张三”)for user in users:print(user.username);return 数据查找成功;数据库中的查有许多操作下面例举一下
四、外键
1、创建外键 — 建表的时候告知某个字段对应其余表的哪个字段。例如
author_id db.Column(db.Integer, db.ForeignKey(User.id));2、两个字段相互联系 方法一backref
#Article表中的字段author
author db.relationship(User, backrefarticles”) #这句话说明它需要对应User表中的字段articles这时不需要再User表中进行补充代码方法二back_populates
#Article表中的字段author
author db.relationship(User,back_populates articles”)
#User表中的字段articles
articles db.relationship(Article, back_populates author)将两个表联系起来。
五、ORM对象的migrate迁移
首先问题是为什么需要利用flask-migrate进行对象迁移 Answer 原始方案中的db.create_all() 不能够实现表创建完成之后的字段的增加和修改。
#原始方案
with app.app_context():db.create_all()因此要使用migrate框架来实现python中和数据库中的ORM对象的同步
初始化迁移环境
flask db init
在项目中创建一个migrate目录用于存放迁移脚本生成迁移脚本
flask db migrate
这个命令会比较你的模型定义和当前数据库的状态生成一个迁移脚本应用迁移
flask db upgrade
这个命令执行脚本从而在数据库中创建或更新表结构