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 MVCC机制原理详解
Apr 20 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
mysql中整数数据类型tinyint详解
Dec 06 MySQL
一条 SQL 语句执行过程
Mar 17 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
MySQL中dd::columns表结构转table过程及应用详解
Sep 23 MySQL
关于MySQL中explain工具的使用
May 08 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
PHP学习之PHP变量
2006/10/09 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
摘自启点的main.js
2008/04/20 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js实现每日自动换一张图片的方法
2015/05/04 Javascript
跟我学习javascript解决异步编程异常方案
2015/11/23 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
vue.js+boostrap项目实践(案例详解)
2016/09/21 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
Python获取当前时间的方法
2014/01/14 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
python集合的新增元素方法整理
2020/12/07 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
次世代生活态度:Hypebeast
2018/07/05 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
党员干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python