flask_sqlalchemy

1.flask sqlalchemy 及 database相结合

#	step1. 创建app对象,导入SQLALchemy
from flask import Flask
from flask_sqlalchemy import  SQLALchemy
app  = Flask(__name__)

# step2.配置数据库参数
HOSTNAME = ...
PORT = '3306'
DATABASE = 'database'
USERNAME = 'root'
PASSWORD = 'password'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)

# step3.将数据库参数配置给app,设置app相关配置,并将app传递给SQALchemy
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLALchemy(app) # 这里db对象集成了sqlalchemy中所有的参数,方法,session对象等等,不需要再像sqlalchemy中那样需要不停地导入

# step4.使用案例
# app.py  application文件
class User(db.Model):
	[__tablename__ = 'user'] # 这里可以不再特别设置表名,因为默认表名为   类名.lower()
	id = db.Column(db.Integer,primary_key=True,autoincrement = True)
	username = db.Column(db.String(50),nullable=False)
	password = db.Column(db.String(50),nullable=False)
	
	def __str__(self):
		return "<User:(username:%s)>" % self.username

class Article(db.Model):
	id = db.Column(db.Integer,primary_key=True, autoincrement=True)
	title = db.Column(db.String(50),nullable=False)
	uid = db.Column(db.Integer,db.ForeignKey('user_model.id'))

	author  = db.relationship("User",backref="articles")  # 这里创建主表对本表1对多的关系
	
	def __str__(self):
		return "<User:(username:%s)>" % self.username
	
db.drop_all()  # 这里直接对  Base.metadata进行了封装
db.create_all() # 创建表结构及表之间的外建关系.这里也是对Base.metadata进行了封装

# 增       与sqlalchemy中一样,实例化数据对象,并且将主表对象那个赋值给从表属性,建立起对象之间的关系	
user = User(username='qfedu',password='123456')
article = Article(title='钢铁是怎么炼成的')
article.author  = user
# 将数据对象添加到session对象之中,但是不需要再导入和创建session对象
db.session.add(article)
db.session.commit()

# 删
db.session.delete(an_object)
db.session.commit()
# 改
an_object.field = value  # 这一点与单纯的sqlalchemy中一样,直接给属性赋值,覆盖原来的值
db.session.commit()
# 查 
user = User.query.filter(User.id == 1).first() # 这里的"查"与sqlalchemy中不一样.直接使用数据模型,调用query进行查询.


#  manage.py,入口文件
from flask_script  import  Manager
from app import app

manager = Manager(app)
# 然后在terminal终端中启动服务器,就直接运行了一次数据库操作语句

2.生成迁移文件方式,操作数据库

# step1.安装flask_migrate
pip install flask_migrarte
from flask_migrate import Migrate

#step2. 将app对象  和  db对象绑定
migrate = Migrate(app,db)  # 这里的app,db 都需要在前文工作的基础上进行

# 通过在manager中创建新的命令"db",来启动数据库操作(这里我的理解是:虽然基于flask框架的app与基于数据库的db对象已经绑定了,但是flask中缺少直接启动数据库操作(我们所写的一系列操作数据库的代码)的命令)
mamager.add_comand("db",MigrateCommand)  # 这里db仅仅是这个命令的名字,因为后续可能不止操作一个数据库,所以命令名字应该不能重复,所以要自己起一个名字,对应一个数据库

# 以下命令在terminal终端中执行
# 初始化迁移目录
cd到当前工作文件夹下:python manage.py  db  init  # 这是生成迁移目录的命令

#仅接着身退功成迁移脚本
 python manage.py  db migrate  # 这一步是在迁移文件夹中生成Python中我们所写的数据库操作对应的脚本

#最后一步是执行迁移脚本中的脚本,在数据库上映射出我们所要进行的操作
 python manage.py  db  upgrade


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值