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 10 MySQL
MySQL 分页查询的优化技巧
May 12 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
浅谈MySQL user权限表
Jun 18 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
Mysql实现简易版搜索引擎的示例代码
Aug 30 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
解决Mysql多行子查询的使用及空值问题
Jan 22 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
数据设计之权限的实现
Aug 05 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
php数组函数序列之each() - 获取数组当前内部指针所指向元素的键名和键值,并将指针移到下一位
2011/10/31 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
原生js实现shift/ctrl/alt按键的获取
2013/04/08 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
python根据距离和时长计算配速示例
2014/02/16 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python3中sys.argv的实例用法
2020/04/24 Python
sklearn的predict_proba使用说明
2020/06/28 Python
python3中编码获取网页的实例方法
2020/11/16 Python
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
销售内勤岗位职责
2014/04/15 职场文书
社区服务标语
2014/07/01 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
婚礼新人答谢词
2015/01/04 职场文书
中学音乐课教学反思
2016/02/18 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
如何使用php生成zip压缩包
2021/04/21 PHP