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 Online DDL的使用详解
May 20 MySQL
MySQL库表名大小写的选择
Jun 05 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
浅谈MySQL函数
Oct 05 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
mysql timestamp比较查询遇到的坑及解决
Nov 27 MySQL
mysql 生成连续日期及变量赋值
Mar 20 MySQL
MYSQL优化之数据表碎片整理详解
Apr 03 MySQL
mysql数据库隔离级别详解
Jun 16 MySQL
postgresql如何找到表中重复数据的行并删除
May 08 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
一个php作的文本留言本的例子(三)
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
discuz论坛更换域名,详细文件修改步骤
2020/12/09 PHP
Javascript & DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
js实现继承的5种方式
2015/12/01 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
2016/10/28 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
浅谈JavaScript中this的指向更改
2020/07/28 Javascript
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
python爬虫正则表达式之处理换行符
2018/06/08 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
Python调用C/C++的方法解析
2020/08/05 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
健康家庭事迹材料
2014/05/02 职场文书
如何写求职信
2014/05/24 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
安全隐患整改报告
2014/11/06 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
地道战观后感
2015/06/04 职场文书