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。
所以,我们需要创建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()
---当才华撑不起你的野心的时候,请努力!---