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集群搭建
May 26 MySQL
MySQL高速缓存启动方法及参数详解(query_cache_size)
Jul 01 MySQL
MySQL中连接查询和子查询的问题
Sep 04 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
详解Mysq MVCC多版本的并发控制
Apr 29 MySQL
mysql 获取相邻数据项
May 11 MySQL
MySQL中的全表扫描和索引树扫描
May 15 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
MySQL选择合适的备份策略和备份工具
Jun 01 MySQL
MySQL外键约束(Foreign Key)案例详解
Jun 28 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
用js的document.write输出的广告无阻塞加载的方法
2014/06/05 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
javascript基础知识讲解
2017/01/11 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python探索之SocketServer详解
2017/10/28 Python
Python处理中文标点符号大集合
2018/05/14 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python向图片里添加文字
2019/11/26 Python
聊聊python中的异常嵌套
2020/09/01 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
J2EE中常用的名词进行解释
2015/11/09 面试题
十佳大学生事迹材料
2014/01/29 职场文书
小学教师师德感言
2014/02/10 职场文书
大学课外活动总结
2014/07/09 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
大雁塔英文导游词
2015/02/10 职场文书
客服专员岗位职责
2015/02/10 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技