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 18 MySQL
MySQL不使用order by实现排名的三种思路总结
Jun 02 MySQL
解析MySQL binlog
Jun 11 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
MySQL 分区表中分区键为什么必须是主键的一部分
Mar 17 MySQL
MySQL数据库优化之通过索引解决SQL性能问题
Apr 10 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL如何使备份得数据保持一致
May 02 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
mysql数据库隔离级别详解
Jun 16 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
jQuery live
2009/05/15 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python实现最小二乘法线性拟合
2019/07/19 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
携程英文网站:Trip.com
2017/02/07 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
ajax是什么及其工作原理
2012/02/08 面试题
幼儿园庆六一游园活动方案
2014/01/29 职场文书
云冈石窟导游词
2015/02/04 职场文书
扬州个园导游词
2015/02/06 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
nginx配置指令之server_name的具体使用
2022/08/14 Servers