ORM模型框架操作mysql数据库的方法


Posted in MySQL onJuly 25, 2021

【什么是ORM】

ORM 全称是(Object Relational Mapping)表示对象关系映射; 通俗理解可以理解为编程语言的虚拟数据库;

【理解ORM】

用户地址信息数据库表与对象的映射

ORM模型框架操作mysql数据库的方法

【ORM的重要特性】

1.面向对象的编程思想,方便扩充

2. 少写(几乎不写)sql,提升开发效率

3.支持多种类型的数据库(常用的mysql,pg,oracle等等),方便切换

4.ORM技术已经相当成熟,能解决绝大部分问题

【ORM模型框架的选择】

ORM模型框架操作mysql数据库的方法

【SQLAlchemy ORM模型】

众所周知,ORM框架模型可选择的有很多,那么我们这边选择了SQLAlchemy 模型框架

pip install SQLAlchemy 安装sql alchemy; 也可以指定版本号pip install SQLAlchemy ==1.4.17

import sqlalcherm; sqlalchemy.__version__; 验证是否安装成功及版本号;

【SQL Alchemy的使用】

一.开始连接数据库
二.声明ORM模型基类
三.实现ORM模型类
四.同步数据库表

开始连接数据库

  • 延迟连接(Lazy Connecting)——只有在真正操作数据库的时候,才会连接数据库
  • 连接代码示例
from sqlalchemy import  create_engine

create_engine("mysql://root:@127.0.0.1:3306/school?charset=utf8,echo=True,future=True")

create_engine 参数解释

  1. url(默认第一个参数)——连接到哪种类型的数据库,如:mysql;以哪种数据库连接器(驱动)来连接数据库
  2. echo——是否输出logging(日志)信息,会把日志都打印出来
  3. future使用SQLAlchemy2.0 API风格

SQLAlchemy配置

ORM模型框架操作mysql数据库的方法

当密码中含有特殊字符时,怎么处理?

话不多说,见下方代码

from urllib.parse import quote_plus
如果密码里有特殊字符时,这边需要导入一个类来处理

password_formatted= quote.plus("mima%&&&mima")
把处理后的密码粘贴到上方的sqlalchemy配置中,即可

声明ORM模型基类

from sqlalchemy.orm import declarative_base

声明这个基类
Base = declarative_base()

【实现ORM模型类】

如何实现? 我们需要写1个类去继承他

然后还需要设立1个属性

from sqlalchemy import Column, Integer, String, DateTime


class Student(Base):
    """学生信息表"""
    __tablename__ = 'student'
    id = Column(Integer, name='id', primary_key=True)
    stu_no = Column(Integer, nullable=False, comment='学号')
    stu_name = Column(String(16), nullable=False, comment='姓名')
    created_at = Column(DateTime)

1.需要在同步之前保证 数据库中有这个库,如果没有,则需要手动创建

2 创建表,删除表

from  orm_connect_example import Base ,engine

# 创建表
Base.metadata.create_all(engine)

#删除表
Base.metadata.drop_all(engine)

【ORM对应的模型字段类型】

ORM模型框架操作mysql数据库的方法

ORM模型框架操作mysql数据库的方法

【代码示例】

from sqlalchemy import create_engine
from sqlalchemy.orm import declarative_base
from sqlalchemy import Column, Integer, String, DateTime

# 第一步,准备连接
engine = create_engine('mysql://root:@10.72.100.1:8081/test_database_1?charset=utf8',echo=True)

# 第二步,声明ORM模型的基类
Base = declarative_base()


# 第三步,实现ORM模型类
class Student(Base):
    """学生信息表"""
    __tablename__ = 'student'
    id = Column(Integer, name='id', primary_key=True)
    stu_no = Column(Integer, nullable=False, comment='学号')
    stu_name = Column(String(16), nullable=False, comment='姓名')
    created_at = Column(DateTime)
#第四步 同步数据库表
def create_table()
    """同步数据库表"""
    # 新建表
    Base.metadata.create_all(bind=engine)
    # 删除表
    Base.metadata.drop_all(bind=engine)

到此这篇关于ORM模型框架操作mysql数据库的方法的文章就介绍到这了,更多相关ORM模型框架内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql死锁和分库分表问题详解
Apr 16 MySQL
MySQL Shell的介绍以及安装
Apr 24 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
Jun 21 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
Nebula Graph解决风控业务实践
Mar 31 MySQL
mysql的Buffer Pool存储及原理
Apr 02 MySQL
MySQL详解进行JDBC编程与增删改查方法
Jun 16 MySQL
MySQL池化框架学习接池自定义
Jul 23 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
AngularJS动态菜单操作指令
2017/04/25 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
Python生成随机数的方法
2014/01/14 Python
不可错过的十本Python好书
2017/07/06 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Python学习小技巧总结
2018/06/10 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
python获取array中指定元素的示例
2019/11/26 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
教师考察材料范文
2014/06/03 职场文书
2014年手术室工作总结
2014/11/26 职场文书
《比尾巴》教学反思
2016/02/24 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android