前言:
Django的ORM虽然强大,但是毕竟局限在Django,而SQLAlchemy是Python中的ORM框架;
SQLAlchemy的作用是:类/对象--->SQL语句--->通过pymysql/MySQLdb模块--->提交到数据库执行;
组成部分:
- Engine,框架的引擎
- Connection Pooling ,数据库连接池
- Dialect,选择连接数据库的DB API种类
- Schema/Types,架构和类型
- SQL Exprression Language,SQL表达式语言
SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:
MySQL-Python mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> pymysql mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>] MySQL-Connector mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname> cx_Oracle oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...] 更多:http://docs.sqlalchemy.org/en/latest/dialects/index.html
pip3 install sqlalchemy #安装sqlalchemy模块
一、 基本使用
1.原生SQL
import time import threading import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.engine.base import Engine conn_pool=create_engine( #创建sqlalchemy引擎 "mysql+pymysql://webproject:web@192.168.1.18:3306/web?charset=utf8", max_overflow=2, #超过连接池大小之后,允许最大扩展连接数; pool_size=5, #连接池大小 pool_timeout=30,#连接池如果没有连接了,最长等待时间 pool_recycle=-1,#多久之后对连接池中连接进行一次回收 ) #单线程操作线程池 conn = conn_pool.raw_connection() #从连接池中获取1个连接,开始连接 cursor = conn.cursor() cursor.execute( "select * from cmdb_worker_order" ) result = cursor.fetchall() print(result) cursor.close() conn.close()