1. 程式人生 > >ORM框架SQLAlchemy學習(未整理完)

ORM框架SQLAlchemy學習(未整理完)

性能 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學習(未整理完)