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和Oracle之间的误区
May 18 MySQL
修改MySQL的默认密码的四种小方法
May 26 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
mysql定时自动备份数据库的方法步骤
Jul 07 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
Mar 13 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
MySQL 数据库 增删查改、克隆、外键 等操作
May 11 MySQL
关于mysql中string和number的转换问题
Jun 14 MySQL
MySQL8.0 Undo Tablespace管理详解
Jun 16 MySQL
MySQL详细讲解变量variables的用法
Jun 21 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
MySQL索引是啥?不懂就问
MySQL 四种连接和多表查询详解
MySQL 聚合函数排序
MySQL 那些常见的错误设计规范,你都知道吗
Jul 16 #MySQL
MySQL 5.7常见数据类型
mysq启动失败问题及场景分析
You might like
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
坏狼php学习 计数器实例代码
2008/06/15 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
javascript中cookie对象用法实例分析
2015/01/30 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Python字符串的全排列算法实例详解
2019/01/07 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
python实现ip代理池功能示例
2019/07/05 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
wxpython布局的实现方法
2019/11/01 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
会计工作决心书
2014/03/11 职场文书
珠宝店促销方案
2014/03/21 职场文书
学习退步检讨书
2014/09/28 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
Oracle11g R2 安装教程完整版
2021/06/04 Oracle