ORM框架SQLAlchemy學習(未整理完)
阿新 • • 發佈:2018-01-31
性能 select create external 其他 class 學習 -m --
一、基本介紹
以下介紹來自維基百科,自由的百科全書。
SQLAlchemy是Python編程語言下的一款開源軟件。提供了SQL工具包及對象關系映射(ORM)工具,使用MIT許可證發行。
SQLAlchemy“采用簡單的Python語言,為高效和高性能的數據庫訪問設計,實現了完整的企業級持久模型”。SQLAlchemy的理念是,SQL數據庫的量級和性能重要於對象集合;而對象集合的抽象又重要於表和行。因此,SQLAlchmey采用了類似於Java裏Hibernate的數據映射模型,而不是其他ORM框架采用的Active Record模型。不過,Elixir和declarative等可選插件可以讓用戶使用聲明語法。
SQLAlchemy首次發行於2006年2月,並迅速地在Python社區中最廣泛使用的ORM工具之一,不亞於Django的ORM框架。
SQLAlchemy-- > 第一步:將對象轉換成SQL 第二步:使用數據API執行SQL並獲取執行結果。
1.安裝
# windows pip3 install sqlalchemy # Linux $ easy_install sqlalchemy
2.流程介紹
#1、使用者通過ORM對象提交命令 #2、將命令交給SQLAlchemy Core(Schema/Types SQL Expression Language)轉換成SQL語句#3、使用 Engine/ConnectionPooling/Dialect 進行數據庫操作 # 3.1、匹配使用者事先配置好的egine # 3.2、egine從連接池中取出一個鏈接 # 3.3、基於該鏈接通過Dialect調用DB API,將SQL轉交給它去執行
簡而言之:
#第一個階段(流程1-2):將SQLAlchemy的對象換成可執行的sql語句 #第二個階段(流程3):將sql語句交給數據庫執行
可跳過第一階段,即自己寫sql語句,直接給數據庫執行。
from sqlalchemy import create_engine#1 準備 # 需要事先安裝好pymysql # 需要事先創建好數據庫:create database db1 charset utf8; #2 創建引擎 egine=create_engine(‘mysql+pymysql://[email protected]/db1?charset=utf8‘) #3 執行 自己寫的sql語句 # egine.execute(‘create table if not EXISTS t1(id int PRIMARY KEY auto_increment,name char(32));‘) # cur=egine.execute(‘insert into t1 values(%s,%s);‘,[(1,"egon1"),(2,"egon2"),(3,"egon3")]) #按位置傳值 # cur=egine.execute(‘insert into t1 values(%(id)s,%(name)s);‘,name=‘egon4‘,id=4) #按關鍵字傳值 #4 新插入行的自增id # print(cur.lastrowid) #5 查詢 cur=egine.execute(‘select * from t1‘) cur.fetchone() #獲取一行 cur.fetchmany(2) #獲取多行 cur.fetchall() #獲取所有行
3. DB API 介紹
SQLAlchemy本身無法操作數據庫,其必須以來pymsql等第三方插件,Dialect用於和數據API進行交流,根據配置文件的不同調用不同的數據庫API,從而實現對數據庫的操作,常見的幾種配置如下:
#1、MySQL-mysqldb mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname> #2、MySQL-pymysql mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options> #3、MySQL-Connector mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname> #4、cx_Oracle oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
二、創建表
ORM中:
# 類名 ===> 表名 # 對象 ===> 表中的一行記錄
需求:
創建四張表:業務線,服務,用戶,角色,利用ORM創建出它們,並建立好它們直接的關系
ORM框架SQLAlchemy學習(未整理完)