Flask数据库连接

Flask数据库连接

Python数据库连接方式

python中的数据库连接有两种方式:

  • Python 标准数据库接口,使用 SQL 语句正常操作数据库,
    e.g: MySQL 关系型数据库的 pymsql 模块
  • 用 ORM 来进行数据库连接, Python 中使用 sqlalchemy , flask中典型的 flask_sqlalchemy ,
    以面向对象的方式进行数据库的连接与操作
  • ORM 是什么?有什么优势?
    ORM ,即 Object-Relational Mapping (对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的 SQL 语句打交道,只需简单的操作对象的属性和方法。
Flask-SQLAlchemy

Flask-SQLAlchemy 是一个 Flask 扩展,简化了在 Flask 程序中使用 SQLAlchemy 的操作。
SQLAlchemy 是一个很强大的关系型数据库框架,支持多种数据库后台。 SQLAlchemy 提
供了高层 ORM ,也提供了使用数据库原生 SQL 的低层功能。

配置数据库
安装第三方模块
pip install flask-sqlalchemy
数据库配置

在app.py文件中:

from flask_sqlalchemy import SQLAlchemy
# 获取当前绝对路径
basedir = os.path.abspath(os.path.dirname(__file__)) app = Flask(__name__)
# SQLALCHEMY_DATABASE_URI: 用于连接数据的数据库。 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
# sqlchemy将会追踪对象的修改并且发送信号 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 
# 每次请求结束之后都会提交数据库的变动 
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
# 数据库与app项目关联, 返回SQLAlchemy实例对象,
# 后面可以使用对象调用数据 db = SQLAlchemy(app)
流行的数据库引擎采用的数据库 URL格式

在这里插入图片描述

连接 mysql 数据库报错解决

报错为:ImportError: No module named ‘MySQLdb’”
MySQLdb只支持Python2,还不支持python3可以用PyMySQL代替。

安装方法:pip install PyMySQL
然后在需要的项目中,把 init.py中添加两行:

    import pymysql
    pymysql.install_as_MySQLdb()

就可以用 import MySQLdb了。其他的方法与MySQLdb一样。

定义模型

模型(Model)这个术语表示程序使用的持久化实体。

class Role(db.Model):
	# __tablename__类变量定义数据库中表的名称。不指定默认为模型名称。
	# Flask-SQLAlchemy需要给所有的模型定义主键列,通常命名为id。
	id = db.Column(db.Integer, primary_key=True)
	name = db.Column(db.String(64), unique=True)
	# repr()显示一个可读字符串,用于调试和测试 
	def __repr__(self): 
		return '<Role %r>' % self.name 
class User(db.Model):
	__tablename__ = 'users' 
	id = db.Column(db.Integer, primary_key=True)
	username = db.Column(db.String(64), unique=True, index=True) 
	def __repr__(self): 
		return '<User %r>' % self.username
模型列类型

在这里插入图片描述

模型列属性

在这里插入图片描述

数据查询
查询过滤器

在这里插入图片描述

查询执行函数

在这里插入图片描述

分页实现
分页对象拥有的属性

在这里插入图片描述

分页对象拥有的方法

在这里插入图片描述

数据库关系

数据库实体间有三种对应关系:一对一,一对多,多对多。

一对一关系

一个学生对应一个

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值