一. 介绍

SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

# 安装
pip3 install sqlalchemy

第五篇 Flask组件之SQLAchemy及Flask-SQLAlchemy插件/Flask-Script/Flask-migrate/pipreqs模块

组成部分:

  • Engine,框架的引擎
  • Connection Pooling ,数据库连接池
  • Dialect,选择连接数据库的DB API种类(即选择是用pymysql还是mysqldb)
  • Schema/Types,架构和类型
  • SQL Exprression Language,SQL表达式语言

SQLAlchemy本身无法操作数据库,其必须以pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

下面这些链接是字符串:在Dialect里
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

要使用这些,必须先安装对应的 mysqldb、pymysql、mysqlconnector、 cx_oracle

 二.基本使用(一般不按照该示例怎么写,只为了说明)

1. 连接池

示例1:连接池始终只有一个链接

import time
import threading
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.engine.base import Engine

engine = create_engine(
    # 用pymysql链接mysql;
    # root:123   用户名:密码
    # 127.0.0.1:3006 数据库ip及端口
    # t1:数据库名
    # charset=utf8:编码
    "mysql+pymysql://root:123@127.0.0.1:3306/t1?charset=utf8",
    max_overflow=2,  # 超过连接池大小外最多创建的连接(即5个已经不够用了,最多再能创建2个,也就是总共最多创建7个链接池)
    pool_size=5,  # 连接池大小,最多5个
    pool_timeout=30,  # 池中没有线程最多等待的时间(秒),否则报错
    pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
)

conn = engine.raw_connection()  # 去链接池拿一个链接
cursor = conn.cursor()  # 在链接里拿个cursor,这里其实已经执行了pymysql里的功能了
# 执行sql语句
cursor.execute(
    "select * from t1"
)
result = cursor.fetchall()
cursor.close()
conn.close()
示例一

相关文章:

  • 2021-06-24
  • 2022-12-23
  • 2021-06-17
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-16
猜你喜欢
  • 2022-12-23
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2022-03-07
  • 2022-12-23
  • 2021-06-30
相关资源
相似解决方案