資源描述:
《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