mysql和orm有什么关系,032_关系型数据库MySQL_ORM对象关系映射

1. 理解对象关系映射

对象关系映射(Object-Relational Mapping, ORM): 作用是在关系型数据库和业务实体对象之间作一个映射,这样,在具体的操作业务对象的时,不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。简单理解:是可以将 py 语言翻译为 sql 语言,将 sql 语言翻译为 py 语言的的过程

SQLAlchemy:是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。

2. 利用sqlalchemy实现ORM

安装 sqlalchemy,在一台有安装有 mysql 数据库的机器上

pip install sqlalchemy

代码示例:

# object(oop) --> mysql(SQL)

import sqlalchemy

from sqlalchemy import Column, Integer, String

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import Session, sessionmaker

import pymysql

pymysql.install_as_MySQLdb()

# 1. 创建数据库引擎(连接数据库的过程)

# echo=True, 显示翻译好的sql语句

engine = sqlalchemy.create_engine("mysql://root:redhat@localhost/StudentProject",

encoding="utf8", echo=True)

# 2. 绑定并建立缓存

# session = Session()

mySession = sessionmaker(bind=engine)

session = mySession()

# 3. 建立数据库对象需要继承的基类

Base = declarative_base()

# 4. 自定义一个类,一个类就是一个数据库表,将其翻译成sql语句以生成一个数据库表

class Student(Base):

# 数据库表的名称

__tablename__ = 'stuinfo'

id = Column(Integer, primary_key=True, autoincrement=True)

name = Column(String(20))

gender = Column(String(20))

def __repr__(self):

return 'Student' % (self.name)

if __name__ == '__main__':

# 5. 根据设置的信息创建数据库表-(创建类:创建数据库表的过程)

Base.metadata.create_all(engine)

# ***添加数据信息***:实例化对象添加一条信息

stu1 = Student(id=3, name='xiaoming', gender='女')

stu2 = Student(id=4, name='xiaogang', gender='男')

stu3 = Student(id=5, name='xiaoming', gender='男')

session.add(stu1) # 添加一条数据

session.add_all([stu2, stu3]) # 添加多条数据

session.commit() # 对数据进行增、删、改操作后一定要进行事务提交

# ***查询数据信息***

print(session.query(Student).all())

# 根据筛选条件查询信息

print(session.query(Student).filter_by(name='xiaoming').first())

print(session.query(Student).filter_by(name='xiaoming').all())

print(session.query(Student).filter_by(name='xiaogangbalbala').first())

# ***删除信息***

del_stu = session.query(Student).filter_by(name='xiaohong').first()

print('Before Delete: ', del_stu)

session.delete(del_stu)

session.commit() # 对数据进行增、删、改操作后一定要进行事务提交

del_stu = session.query(Student).filter_by(name='xiaohong').first()

print('After Delete: ', del_stu)

4b155eefdb9afb4bb513bf2921f0f758.png

7443628b0808bf41c06574ee61e91166.png

煮面要加牛奶

发布了37 篇原创文章 · 获赞 0 · 访问量 5286

私信

关注

标签:session,__,sqlalchemy,name,数据库,ORM,Student,MySQL,032

来源: https://blog.csdn.net/qq_21156327/article/details/104046481

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值