1. 提取共性
2. 分類
3. 模板「約束」
4. 當一類函式公用同樣引數時候,可以轉變成類進行 - 分類
3. 物件導向: 資料和邏輯(屬性和行為)組合在一起
函式程式設計:資料和邏輯分離
1特殊方法:
2class
foo:
3def
__init__
(self,name):
4 self.name =name56
7def
show(self):
8print
(self.name)910
def__call__
(self):
11pass
1213
def__getitem__
(self,key):
14pass
1516
def__setitem__
(self,key,value):
17pass
1819
def__delitem__
(self,key):
20pass
2122 obj1 = foo('
eric')
2324
obj1()
25 obj1['k'
]26 obj1['
k'] = 123
27del
obj[k]
28 obj.__dict__
>>>>>>>>>>>>>>>>>>>物件後面直接加括號呼叫call方法 python特有的
sqlalchemy的增刪改查操作:
1import
pymysql
2from sqlalchemy.ext.declarative import
declarative_base
3from sqlalchemy import
column, integer, string, foreignkey, uniqueconstraint,index
4from sqlalchemy.orm import
sessionmaker, relationships
5from sqlalchemy import
create_engine
67 base =declarative_base()8#
建立表9
defcreate_db():
10 engine = create_engine("
mysql+pymysql:
", max_overflow=5)
11base.metadata.create_all(engine)12#
刪除表13
defdrop_db():
14 engine = create_engine("
mysql+pymysql:
", max_overflow=5)
15base.metadata.drop_all(engine)
1617
18class
userinfo(base):
19__tablename__ = '
userinfo
'20 id = column(integer, primary_key=true, autoincrement=true)
21 name = column(string(36), nullable=true)
22 age =column(integer)
23 email = column(string(20), index=true)
24 utp_id = column(integer, foreignkey('
usertype.uid'))
2526
__table_args__ =(
27 uniqueconstraint('
id', '
', name='
ix_id_mail'),
28 index('
mail_name
','utp_id'),
29)3031
def__repr__
(self):
32return
"%s-%s-%s
" %(self.name,self.age,self.email)
3334
class
usertype(base):
35__tablename__ = '
usertype
'36 uid = column(integer, primary_key=true, autoincrement=true)
37 title = column(string(30), nullable=true, index=true)
3839
#插入資料
4041 engine = create_engine("
mysql+pymysql:
", max_overflow=5)
42 session=sessionmaker(bind=engine)
43 session=session()44#
obj1=userinfo(name='kevin',age=18,email='[email protected]')45#
ses.add(obj1)46#
類--->表47#
物件---->行
4849
#objs=[50#
usertype(title='普通會員'),51#
usertype(title='銀牌會員'),52#
usertype(title='**會員'),53#
usertype(title='鑽石會員'),54#
]55#session.add_all(objs) #記錄寫入表中
5657#查詢
58#type_list=session.query(usertype).all()59#
print(session.query(usertype)) #查詢select sql語句60#
select usertype.uid as usertype_uid, usertype.title as usertype_title from usertype61#
for row in type_list:62#
print(row.uid,row.title)
6364#刪除
65#info_list=session.query(userinfo).filter(userinfo.id>2).delete()66#
for row in info_list:67#
print(row.name,row.email)
6869
#修改 字串的修改70#
info_list=session.query(userinfo).filter(userinfo.id>0).update(,synchronize_session=false)
7172
#進行數字的計算
73 info_list=session.query(userinfo).filter(userinfo.id>0).update(,synchronize_session='
evaluate')
7475 session.commit() #
提交76
session.close()
7778 create_db()
子查詢操作:
1#s1=session.query(userinfo).filter(userinfo.id>2)2#
s2=session.query(usertype).filter(usertype.uid<2)3#
ret1=s1.union(s2).all() #兩次結果連線自動去重4#
ret2=s1.union_all(s2).all() #兩次結果連線全部值 不去重
5 ret=session.query(usertype,session.query(userinfo).filter(userinfo.age>20).subquery())6#
ret=session.query(usertype.uid,session.query(userinfo).filter(userinfo.id==usertype.uid).as_scalar())
7print(ret)
物件關係對映(ORM)
本文主要介紹物件關係對映 orm 是什麼,以及它的優缺點。物件導向是從軟體工程基本原則 如耦合 聚合 封裝 的基礎上發展起來的,而關聯式資料庫則是從數學理論發展而來的,兩套理論存在顯著的區別。為了解決這個不匹配的現象,物件關係對映技術應運而生。圖 1 物件關係對映功能圖 orm 基於三個核心原則 讓...
ORM物件關係對映
資料庫查詢幫助類庫 自動生成sql 通用 public class sqlhelper using sqlconnection conn new sqlconnection configrationmanager.sqlconnectionstring 用來完成sql語句的快取 每張表都是幾個固定s...
物件關係對映 ORM
1 建立表,修改表,刪除表 2 插入資料 3 修改資料 4 刪除資料 注 不能建立庫,在連線mysql前確保庫先建立好 類名 表 物件 一條資料 屬性 字段 class userinfo models.model nid models.autofield primary key true 自增主鍵 ...