第九章:ORM操作

flask_sqlalchemy 的使用

  1. 使用 flask_sqlalchemy 中的SQLAlchemy 进行初始化:
   from flask_sqlalchemy import SQLAlchemy
   from flask import Flask
   app = Flask(__name__)
   db = SQLAlchemy(app)
  1. 设置配置信息 在 config.py 文件中添加以下配置信息:
   SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@localhost:3306/test?charset=utf8'
   SQLALCHEMY_TRACK_MODIFICATIONS = False
  1. app 文件中,添加配置文件。
   from flask_sqlalchemy import SQLAlchemy
   from flask import Flask
   app = Flask(__name__)
   app.config.from_object('config')
   db = SQLAlchemy(app)
  1. 做一下测试
   db.create_all()

如果没有报错,说明配置没有问题,如果有错误,可以根据错误进行修改。

  1. flask_sqlalchemy 模型创建
   from flask import Flask
   from flask_sqlalchemy import SQLAlchemy
   app = Flask(__name__)
   app.config.from_object('config')
   db = SQLAlchemy(app)
   
   # 创建模型类
   class User(db.Model):
   	id = db.Column(db.Integer,primary_key=True,autoincrement=True)
   	username = db.Column(db.String(32),nullable=False)
   	
   db.create_all() # 将模型映射到数据库中
  • 参数
    • Integer 代表的是整型
    • String 代表的是varchar 类型,需要指定长度
    • Text 代表的是 Text 类型
  • 其他参数:
    • primary_key 代表的是将这个字段设置为主键
    • autoincrement 代表的是这个主键为自增长的
    • nullable 代表的是这个字段是否为空,False : 不能为空,True : 可以为空
    • unique 代表的是这个字段是否是唯一索引,True : 唯一索引 False: 不是唯一索引
  1. flask_sqlachemy 处理数据的方法
    • 增加数据
     def insert():
     	try:
     		user = User(username='fuqiang')
     		db.session.add(user)
     		db.session.commit()
     		return user
     	except:
     		db.session.rollback()
     		return None	
  • 删除数据
     def delete():
     	try:
     		obj= User.query.filter_by(id=id).delete()
     		db.session.commit()
     		return obj
     	except:
     		db.session.rollback()
     		return None
  • 更新数据
	 from sqlalchemy import text
     def update():
     	data = {'username':'qiang'}
     	where = 'id=1'
     	try:
     		user= User.query.filter_by(text(where)).update(data)
     		db.session.commit()
     		return user
     	except:
     		db.session.rollback()
     		return None
  • 查询数据
	# 第一种查询方式
    def select():
       user = User.query.filter(User.id==id).all()
       return user   
	# 第二种查询方式
	def select():
		user = User.query.filter_by(id=2).all()
		return user
	# 第三种查询方式
    def select():
        where = 'id>1'
        user = User.query.filter_by(text(where)).all()
        return user
  1. sqlalchemy 创建外键

    1. 添加外键 ForeignKey
      from flask import Flask
      from flask_sqlalchemy import SQLAlchemy
      app = Flask(__name__)
      app.config.from_object('config')
      db = SQLAlchemy(app)
      
      # 创建模型类
      class User(db.Model):
      	__tablename__ = 'user'
      	id = db.Column(db.Integer,primary_key=True,autoincrement=True)
      	username = db.Column(db.String(32),nullable=False)
      	__table_args__ = {
              'mysql_charset':'utf8'
      	}
      
      class UserDetail(db.Model):
      	__tablename__ = 'detail'
      	id = db.Column(db.Integer,primary_key=True,autoincrement=True)
      	nickname = db.Column(db.String(32),default='')
      	email = db.Column(db.String(255),default='')
      	address = db.Column(db.String(255),default='')
      	uid = db.Column(db.Integer,db.ForeignKey='user.id') #增加外键
   	users = db.relationship('User',backref=db.backref('details'))
      	__table_args__ = {
              'mysql_charset':'utf8'
      	}
      db.create_all() # 将模型映射到数据库中
  1. 使用外键获取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值