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 20 MySQL
MySQL update set 和 and的区别
May 08 MySQL
Mysql 如何查询时间段交集
Jun 08 MySQL
MySQL 亿级数据导入导出及迁移笔记
Jun 18 MySQL
MySQL快速插入一亿测试数据
Jun 23 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL系列之开篇 MySQL关系型数据库基础概念
Jul 02 MySQL
Mysql案例刨析事务隔离级别
Sep 25 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySQL主从切换的超详细步骤
Jun 28 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
python 多线程应用介绍
2012/12/19 Python
python对数组进行反转的方法
2015/05/20 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
更新修改后的Python模块方法
2019/03/03 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
python 读取yaml文件的两种方法(在unittest中使用)
2020/12/01 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
员工年终考核评语
2014/12/31 职场文书
三峡人家导游词
2015/01/31 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
2019关于实习生工作安排及待遇的管理方案!
2019/07/16 职场文书
Python os和os.path模块详情
2022/04/02 Python