sqlalchemy的初步認識

2021-08-16 08:01:43 字數 3035 閱讀 1061

sqlalchemy是python的乙個包,用來運算元據庫.其實sqlalchemy自己並不能連線資料庫,它也是通過pymysql或者其他資料庫連線工具連線的.

alchemy,煉丹術,煉金術,魔法

通過sqlalchemy可以使不同的**通過不同的工具連線不同的資料庫.就像是煉丹爐一樣,一切操作都在這裡熔煉.

下面我們看下簡單應用

#首先我們通過這麼乙個方法來連線資料庫

engine = create_engine('mysql+pymysql://root:root@localhost:3306/test?charset=utf8')

create_engine()的引數是乙個url,乙個特殊的url

其中mysql+pymysql ,這是協議,說明我們使用的資料庫型別+連線這個資料庫用到的工具. 所以我們還要安裝pymysql包,否則會報錯誤提示.

://root 這個root是資料庫的使用者名稱

:root@ 這個root是資料庫的密碼

localhost:3306 主機和埠

/test 這個是資料庫的名稱

?charset=utf8 這個是指明資料庫的字符集編碼. 如果不寫 那麼資料庫將不能插入中文,很是尷尬

即使是這樣,煉丹術這個工具也經常在增刪改查的時候報乙個警告

c:\users

\administrator

\local

\programs

\python

\python36\lib

\site-packages\pymysql

\cursors.py:165: warning: (1366, "incorrect string value: '\\xd6\\xd0\\xb9\\xfa\\xb1\\xea...' for column 'variable_value' at row 496")

result = self._query(query)

煉丹術和很多orm一樣,將資料庫的表和物件一一對應

#定義乙個基類

base = declarative_base()

class

employee

(base):

__tablename__ = 'employee'

id = column

(integer, primary_key=true)

name = column

(string(32))

# name = column

(string)

# name = column

(varchar(32))

# name = column

(varchar)

age = column

(integer)

salary = column

(integer)

#對資料庫進行初始化

def init_db():

base.metadata.create_all(engine)

init_db()

這就完成了資料庫的初始化, 成功建立了一張employee表. 首先 要 表化的類繼承基類base , base = declarative_base().

然後通過base.metadata.create_all(engine)就成功的將所有繼承了base的類都表化了.

接下來是增刪改查.

這裡有個session的概念, 增刪改 都需要commit ,否則不會修改表資料.

通過這種方式engine.execute(sql)無需提交,相當於直接用sql語句運算元據庫

# engine.execute("insert into books values(101, '冬天的故事','23.5','lcc')")

#建立乙個session類

session = sessionmaker(bind=engine)

#建立乙個session物件

session = session()

#建立乙個employee

# e1 = employee(name='卡', age=22, salary=9999)

# e1 = employee(name='***x', age=22, salary=9999)

# session.add(e1)

# session.commit()

# e2 = employee(name='lisi', age=30, salary=8000)

# e3 = employee(name='wangwu', age=40, salary=7000)

## session.add_all([e2, e3])

# session.commit()

session.query(employee).filter(employee.id == 5).delete()

# em = session.query(employee).filter(employee.id == 1)

# print(em)

# res = session.query(func.sum(employee.age)).group_by(employee.name).all()

# print(res)

session.commit()

# session.close()

最後將匯入的包雙手奉上

from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import column,integer,string

from sqlalchemy import func

from sqlalchemy import varchar

from sqlalchemy.orm import sessionmaker

類的初步認識

c 一直被稱為是比c更高階的語言,為什麼呢?恐怕就是因為具有物件導向的設計思想,它 將萬千變化 錯綜複雜的外部環境有組織的 有規律的整合在了一起。從規律上,我們引入 了類的概念,將原本複雜的外部環境按照一定的規律和相似點,劃分為不同的類,常言道 物以類聚,鳥易群分嘛。我們在將類有機的進行區別和管理 ...

程序的初步認識

程序是作業系統結構的基礎 是乙個正在執行的程式 計算機中正在執行的程式例項 可以分配給處理器並由處理器執行的乙個實體 由單一順序的執行顯示,乙個當前狀態和一組相關的系統資源所描述的活動單元。在程式的實現中,程序使用大有裨益。1.程序的建立函式 fork vfork 前者父子程序執行順序不定。2.在子...

meaurespec的初步認識

首先,每個iew的meaurespec的模式不是預設就設定好的,而是根據這個view的寬度跟高度的設定跟父容器viewgroup的spec設定來匹配的 我們來看匹配規則 寬高設定分為三種 具體的寬高,warp cortent,match patents 如果view採用固定寬高,也就是寫死的數值那種...