欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

sqlalchemy相关操作(ORM)

程序员文章站 2023-11-14 13:36:40
环境:python3.7,pycharm,mysql ORM(Object Relational Mapper) 对象关系映射(ORM)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术,sqlalchemy是实现ORM技术其中一个库(框架)。 优势 简化开发,因为它可以自动执行对象到表和表 ......

环境:python3.7,pycharm,mysql

orm(object-relational-mapper)

对象关系映射(orm)是一种允许您使用面向对象的范例从数据库查询和操作数据的技术,sqlalchemy是实现orm技术其中一个库(框架)。

优势

  • 简化开发,因为它可以自动执行对象到表和表到对象的转换,从而降低开发和维护成本
  • 与嵌入式sql和手写存储过程相比,代码更少
  • 应用程序层中的透明对象缓存,提高了系统性能
  • 优化的解决方案使应用程序更快,更易于维护

映射类型

sqlalchemy相关操作(ORM)

sqlalchemy操作mysql数据库

1.导入
import sqlalchemy
from sqlalchemy.ext.declarative import declarative_base
2.链接数据库
db = sqlalchemy.create_engine("mysql+pymysql://root:11111111@localhost/demo")
3.创建一个继承基类
base = declarative_base(db)
4.映射
class user(base):
    __tablename__ = 'student'

id = sqlalchemy.column(sqlalchemy.integer, primary_key=true)
name = sqlalchemy.column(sqlalchemy.string(32))
5.创建表
if __name__ == '__main__':

base.metadata.create_all(db)
6.操作数据库
1.导入
from sqlalchemy.orm import sessionmaker

2.绑定一个查询实例
session = sessionmaker(bind=db)
session = session()

3.插入 
######插入单条数据
user =user(
    id = 4,
    name='python'
)
session.add(user)
session.commit()

######插入多条数据
session.add_all(
   [
       user(id=5,name='java'),
       user(id=6,name='php')
   ]
 )
session.commit()

4.查询
######查询多条数据
data = session.query(user).all()
for x in data:
    print (x.name)

data = session.query(user).filter(user.name== 'xxxx').all()
######查询单条数据
data = session.query(user).filter(user.name == 'xxxx').first()
data = session.query(user).filter_by(name='xxxx').first()
######使用get查询id
data = session.query(user).get(ident = 10)
print (data.name)

5.修改
data = session.query(user).get(10)
print (data)
data.name = 'laoli'
session.merge(data)
session.commit()
或者
session.query(user).filter(user.id == 10).update({user.name:"xxxxx",user.id:11})
session.commit()

6.删除
data = session.query(user).filter(user.id == 11).first()
session.delete(data)
session.commit()