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 20 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
MySQL中InnoDB存储引擎的锁的基本使用教程
May 26 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
MySQL数据库查询进阶之多表查询详解
Apr 08 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
MySQL分区路径子分区再分区
Apr 13 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
SQL Server数据库的三种创建方法汇总
May 08 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP强制转化的形式整理
2020/05/22 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
javascript setTimeout和setInterval 的区别
2009/12/08 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
JavaScript onclick事件使用方法详解
2020/05/15 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
django 消息框架 message使用详解
2019/07/22 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
我的动漫时代的创业计划书范文
2014/01/27 职场文书
执行总经理岗位职责
2014/02/03 职场文书
授权委托书怎么写
2014/04/03 职场文书
爱心捐款倡议书
2014/04/14 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
语文复习计划
2015/01/19 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
ant design charts 获取后端接口数据展示
2022/05/25 Javascript