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执行过程以及顺序
May 12 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
Jun 18 MySQL
MySql 8.0及对应驱动包匹配的注意点说明
Jun 23 MySQL
MySQL系列之九 mysql查询缓存及索引
Jul 02 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
SQL语句多表联合查询的方法示例
Apr 18 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
MySQL 语句执行顺序举例解析
Jun 05 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
PHP和XSS跨站攻击的防范
2007/04/17 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
PHP面向对象概念
2011/11/06 PHP
PHP实现图片压缩
2020/09/09 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
location.href 在IE6中不跳转的解决方法与推荐使用代码
2010/07/08 Javascript
jQuery技巧总结
2011/01/01 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
JavaScript中的"=、==、==="区别讲解
2019/01/22 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python FTP两个文件夹间的同步实例代码
2018/05/25 Python
python pandas生成时间列表
2019/06/29 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
员工拾金不昧表扬信
2014/01/09 职场文书
安全标准化汇报材料
2014/02/03 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
七年级作文之英语老师
2019/10/28 职场文书