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 14 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
May 29 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
通过shell脚本对mysql的增删改查及my.cnf的配置
Jul 07 MySQL
MySQL配置主从服务器(一主多从)
Aug 07 MySQL
MySQL和Oracle批量插入SQL的通用写法示例
Nov 17 MySQL
防止web项目中的SQL注入
Dec 06 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 MySQL
mysql中关键词exists的用法实例详解
Jun 10 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
php的控制语句
2006/10/09 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
学习Vue组件实例
2018/04/28 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
js实现div色块碰撞
2020/01/16 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
Python 中的 else详解
2016/04/23 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
python监控进程脚本
2018/04/12 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
Fossil美国官网:化石手表、手袋、首饰及配饰
2019/02/17 全球购物
会计工作心得体会
2014/01/13 职场文书
亲戚结婚的请假条
2014/02/11 职场文书
企业公益活动策划方案
2014/08/24 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
企业法人任命书
2015/09/21 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
CocosCreator ScrollView优化系列之分帧加载
2021/04/14 Python
全新239军机修复记
2022/04/05 无线电