python模块-----sqlAlchemy

什么是ORM?

sqlAlchemy是python中最著名的ORM(Object Relationship Mapping)框架了。

一句话解释的话就是,一种可以把model中的模型和数据库中的一条数据相互转换的工具。

连接数据库,利用数据库字符串构造engine

engine = sqlalchemy.create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')

基础用法

1、基本查询

# coding=UTF-8
import sqlalchemy

engine = sqlalchemy.create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')

with engine.connect() as conn:
    # 最基础的用法
    result = conn.execute("select User from mysql.user; ")
    for item in result:
        print(item)

2、常用操作

在test数据库中,创建user表。sql如下

create table user (id varchar(20) primary key, name varchar(20))

 CRUD(Create Read Update Delete, 增查改删)

在sqlAlchemy中,增删改查操作是通过一个session对象(DBSession,是由sessionmaker创建的)来完成的。
所以,我们需要创建session。
# 创建DBSession类型
DBSession = sessionmaker(bind=engine)

在此基础之上我们就能进行增删改查的操作了。先从增加开始。

# 创建Session对象
session = DBSession()
# 创建User对象
new_user = User(id='1', name='Bob')
# 添加到session
session.add(new_user)
# 提交
session.commit()
# 关闭session
session.close()

 还有查询

# 创建session
session = DBSession()
# 利用session创建查询,query(对象类).filter(条件).one()/all()
user = session.query(User).filter(User.id=='1').one()
print('type:{0}'.format(type(user)))
print('name:{0}'.format(user.name))
# 关闭session
session.close()

 要多一步,就是要先根据筛选条件拿到要更改的对象,然后给对象赋值,再次提交(commit)即可。

# 更新
session = DBSession()
user_result = session.query(User).filter_by(id='1').first()
user_result.name = "jack"
session.commit()
session.close()

 删除操作

# 删除
session = DBSession()
user_willdel = session.query(User).filter_by(id='5').first()
session.delete(user_willdel)
session.commit()
session.close()

 代码整合

# coding=UTF-8

# 导入依赖
from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 创建对象的基类
Base = declarative_base()

# 定义User对象
class User(Base):
    # 表的名字
    __tablename__ = 'user'

    # 表的结构
    id = Column(String(20), primary_key=True)
    name = Column(String(20))


#初始化数据库连接
engine = create_engine('mysql+pymysql://root:ro3QvlLIQcAGysMasUrRPxv0T4V995Tyzu9RAVte@192.168.100.100:3306/test')

# 创建DBSession类型
DBSession = sessionmaker(bind=engine)

# 添加
# 创建Session对象
session = DBSession()
# 创建User对象
new_user = User(id='5', name='Bob')
# 添加到session
session.add(new_user)
# 提交
session.commit()
# 关闭session
session.close()


# 查询
# 创建session
session = DBSession()
# 利用session创建查询,query(对象类).filter(条件).one()/all()
user = session.query(User).filter(User.id=='5').one()
print('type:{0}'.format(type(user)))
print('name:{0}'.format(user.name))
# 关闭session
session.close()


# 更新
session = DBSession()
user_result = session.query(User).filter_by(id='1').first()
user_result.name = "jack"
session.commit()
session.close()


# 删除
session = DBSession()
user_willdel = session.query(User).filter_by(id='5').first()
session.delete(user_willdel)
session.commit()
session.close()


原文地址:https://www.cnblogs.com/jinyuanliu/p/13470866.html