1、ORM技術(對象關係映射)簡介python
若是從數據庫查到幾條數據,須要在Python中表示出來,若是沒學ORM技術,則會使用tuple表示,由於tuple類型的數據不可變。也能夠經過類的形式體現出來。mysql
一、ORM思想:每張表都會有一個對應的類。類的屬性和表的字段一一對應。sql
示例(經過類體現數據庫)數據庫
2、SQLAlchemy 的安裝 與 初始化鏈接 安全
一、在Windows 環境下的pycharm 點擊 Terminal 輸入 pip install SQLAlchemy函數
二、打開虛擬機,進入MySQL 建立對應的庫 sqlalchemy 並受權.net
[root@JSH-01 ~]# mysql -uroot -p123456
mysql> create database sqlalchemy;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)對象
三、初始化鏈接 sqlalchemy 語法結構以下:sqlalchemy
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:123456@192.168.6.137/sqlalchemy',echo=True) print(engine)
命令解析:接口
create_engine()返回一個Engine的實例,而且它表示經過數據庫語法處理細節的核心接口,在這種狀況下,數據庫語法將會被解釋成python的類方法。
mysql+pymysql://root@123456@192.168.6.137/sqlalchemy 其中root是數據庫的用戶名,123456是密碼;192.168.6.137 爲數據庫的IP地址;sqlalchemy 須要鏈接的庫名。
echo參數爲True時,會顯示每條執行的SQL語句,能夠關閉;
運行結果:
3、SQLAlchemy 的操做使用
一、經過SQL語句建立表格
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy',echo=True) print(engine) cus = engine.connect() #相似於建立SQL遊標 sql = '''create table student(id int not null,name VARCHAR(100),age int,address VARCHAR(100))''' cus.execute(sql) cus.close()
二、經過ORM方式建立表格
from sqlalchemy import create_engine from sqlalchemy import Table from sqlalchemy import Integer from sqlalchemy import Column from sqlalchemy import String from sqlalchemy import MetaData engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy') #建立與數據庫的鏈接 metadata = MetaData(engine) #綁定數據源 user = Table("user",metadata, Column("id",Integer,primary_key=True), Column("name",String(100)), Column("tel",String(15)), ) metadata.create_all(engine)
按照如上語句建立的表,相關參數以下:
① MetaData類:主要用於保存表結構,鏈接字符串等數據,是一個多表共享的對象。
② 建立與數據庫的鏈接
engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy')
③ 綁定數據源
metadata = MetaData(engine)
④ 建立表(安全操做模式:即先判斷該表是否存在;若是存在則不建立,若是不存在則建立)
metadata.create_all(engine)
⑤ Table類的構造函數 Table_ _init _ _(self, name, metadata, *args, **kwargs)
其中 name 定義表的名字; metadata 數據源;*args中的 Column類 定義表格中的列。
⑥Column類的構造函數 Column_ _init _ _(self, name, type_, *args, **kwargs)
其中 name 定義列的名字;type_ 類型(詳見 sqlalchemy.types);
primary_key 若是爲true 則該字段爲主鍵。