Python的SQLAlchemy框架使用入門.doc

Python的SQLAlchemy框架使用入門.doc

ID:57395435

大?。?7.50 KB

頁數(shù):3頁

時(shí)間:2020-08-15

Python的SQLAlchemy框架使用入門.doc_第1頁
Python的SQLAlchemy框架使用入門.doc_第2頁
Python的SQLAlchemy框架使用入門.doc_第3頁
資源描述:

《Python的SQLAlchemy框架使用入門.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、這篇文章主要介紹了Python的SQLAlchemy框架使用入門,SQLAlchemy框架是Python中用來操作數(shù)據(jù)庫的ORM框架之一,需要的朋友可以參考下  數(shù)據(jù)庫表是一個(gè)二維表,包含多行多列。把一個(gè)表的內(nèi)容用Python的數(shù)據(jù)結(jié)構(gòu)表示出來的話,可以用一個(gè)list表示多行,list的每一個(gè)元素是tuple,表示一行記錄,比如,包含id和name的user表:  [  ('1','Michael'),  ('2','Bob'),  ('3','Adam')  ]  Python的DB-API返回的

2、數(shù)據(jù)結(jié)構(gòu)就是像上面這樣表示的?! 〉怯胻uple表示一行很難看出表的結(jié)構(gòu)。如果把一個(gè)tuple用class實(shí)例來表示,就可以更容易地看出表的結(jié)構(gòu)來:  classUser(object):  def__init__(self,id,name):  self.id=id  self.name=name  [  User('1','Michael'),  User('2','Bob'),  User('3','Adam')  ]  這就是傳說中的ORM技術(shù):Object-RelationalMappi

3、ng,把關(guān)系數(shù)據(jù)庫的表結(jié)構(gòu)映射到對(duì)象上。是不是很簡單?  但是由誰來做這個(gè)轉(zhuǎn)換呢?所以O(shè)RM框架應(yīng)運(yùn)而生?! ≡赑ython中,最有名的ORM框架是SQLAlchemy。我們來看看SQLAlchemy的用法。  首先通過easy_install或者pip安裝SQLAlchemy:  ?  1  $easy_installsqlalchemy  然后,利用上次我們?cè)贛ySQL的test數(shù)據(jù)庫中創(chuàng)建的user表,用SQLAlchemy來試試:  第一步,導(dǎo)入SQLAlchemy,并初始化DBSessio

4、n:  #導(dǎo)入:  fromsqlalchemyimportColumn,String,create_engine  fromsqlalchemy.ormimportsessionmaker  fromsqlalchemy.ext.declarativeimportdeclarative_base  #創(chuàng)建對(duì)象的基類:  Base=declarative_base()  #定義User對(duì)象:  classUser(Base):  #表的名字:  __tablename__='user'  #表的結(jié)構(gòu)

5、:  id=Column(String(20),primary_key=True)  name=Column(String(20))  #初始化數(shù)據(jù)庫連接:  engine=create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')  #創(chuàng)建DBSession類型:  DBSession=sessionmaker(bind=engine)  以上代碼完成SQLAlchemy的初始化和具體每個(gè)表的class定義。如

6、果有多個(gè)表,就繼續(xù)定義其他class,例如School:  classSchool(Base):  __tablename__='school'  id=...  name=...  create_engine()用來初始化數(shù)據(jù)庫連接。SQLAlchemy用一個(gè)字符串表示連接信息:  '數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動(dòng)名稱://用戶名:口令@機(jī)器地址:端口號(hào)/數(shù)據(jù)庫名'  你只需要根據(jù)需要替換掉用戶名、口令等信息即可。  下面,我們看看如何向數(shù)據(jù)庫表中添加一行記錄?! ∮捎谟辛薕RM,我們向數(shù)據(jù)庫表中添加一行

7、記錄,可以視為添加一個(gè)User對(duì)象:  #創(chuàng)建session對(duì)象:  session=DBSession()  #創(chuàng)建新User對(duì)象:  new_user=User(id='5',name='Bob')  #添加到session:  session.add(new_user)  #提交即保存到數(shù)據(jù)庫:  session.commit()  #關(guān)閉session:  session.close()  可見,關(guān)鍵是獲取session,然后把對(duì)象添加到session,最后提交并關(guān)閉。Session對(duì)象可視

8、為當(dāng)前數(shù)據(jù)庫連接。  如何從數(shù)據(jù)庫表中查詢數(shù)據(jù)呢?有了ORM,查詢出來的可以不再是tuple,而是User對(duì)象。SQLAlchemy提供的查詢接口如下:  #創(chuàng)建Session:  session=DBSession()  #創(chuàng)建Query查詢,filter是where條件,最后調(diào)用one()返回唯一行,如果調(diào)用all()則返回所有行:  user=session.query(User).filter(User.id=='5').one()  #打印類型和對(duì)象的nam

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。