一、什么是SQLAchemy?
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
1、安装SQLAlchemy
pip3 install SQLAlchemy
SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:
MySQL-Python
mysql+mysqldb://用户名:密码(无密码为空)@<host>[:<port>]/<dbname>
pymysql
mysql+pymysql://用户名:密码(无密码为空)@<host>/<dbname>[?<options>]
MySQL-Connector
mysql+mysqlconnector://用户名:密码(无密码为空)@<host>[:<port>]/<dbname>
cx_Oracle
oracle+cx_oracle://用户名:密码(无密码为空)@host:port/dbname[?key=value&key=value...]
更多详见:http://docs.sqlalchemy.org/en/latest/dialects/index.html
二、ORM的使用机制
orm 通过 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句。
from sqlalchemy import create_engine # 基于pymysql连接数据库 engine=create_engine("mysql+pymysql://root:@127.0.0.1:3306/db4?charset=utf8",max_overflow=5) # 创造出类 Session=sessionmaker(bind=engine) # 实例化出对象 session=Session() # 对象的方法 #1、增: # 增加一行数据: obj=表名(列名1=值1,列名2=值2...) session.add(obj) # 增加多行数据: objs=[ 表名(列名1=值1,列名2=值2...), 表名(列名1=值1,列名2=值2...), 表名(列名1=值1,列名2=值2...), ... ] session.add_all(objs) #2、删: session.query(表名).delete() session.query(表名).filter(条件表达式).delete() #3、改: session.query(表名).filter(条件表达式).update({"列名1":"更新的值1", "列名2":"更新的值2",...}) session.query(表名).filter(条件表达式).update({表名.列名1:值1+"str1", 表名.列名2:值2+"str2",...},synchronize_session=False) #支持字符串拼接 session.query(表名).filter(条件表达式).update({表名.列名1:num1+1, 表名.列名2:num2+1,...},synchronize_session=evaluate) #支持值为数字的数学运算 #4、 查: 变量名=session.query(表名).filter(条件表达式).all() for row in 变量名: print(row.列名1,row.列名2...)