Python之ORM

本文深入探讨了ORM(对象关系映射)的概念及其在Python中的应用,重点介绍了SqlAlchemy和Django的ORM。SqlAlchemy的安装与使用,包括创建表、增删改查、关联外键等操作;Django ORM的预备工作,如模块替换,以及模型的增删改查、过滤、一对多、多对多等关系的处理,展示了ORM如何简化数据库操作。
摘要由CSDN通过智能技术生成

一、ORM简介

ORM,即Object Relational Mapping,对象关系映射。

 ORM的作用是将编程语言与数据库进行关联,以简化依赖于数据的应用程序的创建过程。

 例如,ORM通过把Python的对象模型和数据库的关系模型建立起映射关系,在使用编程语言对数据库进行操作时直接使用Python语言的对象模型进行操作,而不用使用SQL语句。

ORM封装了SQL的语句并“隐藏”了如何与数据库进行交互,我们使用时十分方便,不用再考虑让人头疼又难记的SQL语句

                                                                                             (图片来自于百度)

 

二、Python下的ORM之SqlAlchemy

SQLAlchemy是Python编程语言下的一款开源软件。

1.安装SqlAlchemy

pip3 install sqlalchemy

2.使用SqlAlchemy

引用的模块:

​
import sqlalchemy
from sqlalchemy import Column,Integer,String
from sqlalchemy import create_engine
from sqlalchemy import func
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

​


A.创建表:

from sqlalchemy import Column,Integer,String
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

#-----------创建表-----------------
'''数据库有同名的表就不再创建,echo=True时打印详细原生MySQL语句。
   mysql+pymysql://root:123456@localhost/pyDBcharset=utf-8的含义: 
   数据库//用户名:密码@主机/数据库名称?
'''

engine=create_engine("mysql+pymysql://root:123456@localhost/pyDB?charset=utf-8",encoding='utf-8',echo=False)
Base=declarative_base()     #生成ORM基类

class User(Base):
    __tablename__='test1'    #表名
    id=Column(Integer,primary_key=True)
    name=Column(String(32))
    password=Column(String(64))
    def __repr__(self):
        return "<name=%s , password=%s>"%(self.name,self.password)

Base.metadata.create_all(engine)

​

在创建数据库之后,还要创建一个Session实例,相当于创建一个游标的效果
 

from sqlalchemy.orm import sessionmaker

Session_class=sessionmaker(bind=engine) #创建与数据库会话的类,返回一个类,不是实例
my_session=Session_class()                 #创建一个实例

B.增删改查:

'''增'''
#-------------------------------------------------------------------
user_obj1=User(name='Lizo',password='111')
user_obj2=User(name='Tom',password='222')
user_obj3=User(name='Jerry',password='333')

'''此时还没有在数据库创建数据'''
my_session.add(user_obj1)
my_session.add(user_obj2)
my_session.add(user_obj3)

'''此时commit一下才创建了三条数据'''
my_session.commit()



​'''删'''
#-------------------------------------------------------------------
user_obj1=User(name='Lizo',password='111')
user_obj2=User(name='Tom',password='222')
user_obj3=User(name='Jerry',password='333')

'''此时还没有在数据库创建数据'''
my
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值