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採用固定寬高,也就是寫死的數值那種...