前言:
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()