SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

SQLAlchemy是一个独立的orm,对比django的orm框架而言,django无法把它的orm拿出来独立应用在别的web框架下

sqlALchemy

三层结构,第一层就是orm,第二层就sqlalchemy核心功能维护连接池(connecntio poolling)、Dialect负责跟dbapi打交道,原生sql等。orm再强有的时候也必须使用sql处理复杂查询。第三层dbapi。

 

SQLAlchemy本身无法操作数据库,本身就是一个翻译官将函数或类翻译成sql语言,其必须以来pymsql(py3)等第三方插件,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

 

使用 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句。如果orm满足不了就可以使用这个

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 from sqlalchemy import create_engine
 4  
 5  
 6 engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/test", max_overflow=5)
 7  
 8 # 执行SQL
 9 # cur = engine.execute(
10 #     "INSERT INTO hosts (host, color_id) VALUES ('1.1.1.22', 3)"
11 # )
12  
13 # 新插入行自增ID
14 # cur.lastrowid
15  
16 # 执行SQL
17 # cur = engine.execute(
18 #     "INSERT INTO hosts (host, color_id) VALUES(%s, %s)",[('1.1.1.22', 3),('1.1.1.221', 3),]
19 # )
20  
21  
22 # 执行SQL
23 # cur = engine.execute(
24 #     "INSERT INTO hosts (host, color_id) VALUES (%(host)s, %(color_id)s)",
25 #     host='1.1.1.99', color_id=3
26 # )
27  
28 # 执行SQL
29 # cur = engine.execute('select * from hosts')
30 # 获取第一行数据
31 # cur.fetchone()
32 # 获取第n行数据
33 # cur.fetchmany(3)
34 # 获取所有数据
35 # cur.fetchall()
View Code

相关文章:

  • 2022-01-03
  • 2021-12-15
猜你喜欢
  • 2021-11-05
  • 2022-01-26
  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2021-10-09
  • 2021-06-05
相关资源
相似解决方案