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 07 MySQL
Mysql systemctl start mysqld报错的问题解决
Jun 03 MySQL
MySQL 百万级数据的4种查询优化方式
Jun 07 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
浅谈MySQL之select优化方案
Aug 07 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
Mar 03 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
Django进阶之CSRF的解决
2018/08/01 Python
Python封装原理与实现方法详解
2018/08/28 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
小学教师培训方案
2014/06/09 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
篮球赛新闻稿
2015/07/17 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
七年级上册生物的课件
2019/08/07 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL