python學習筆記(十六) - ORM架構(SQLAlchemy)

來源:互聯網
上載者:User

標籤:

所謂的ORM就是Object-Relational Mapping,把關聯式資料庫的表結果映射到對象上。

1. 安裝SQLAlchemy:

easy_install sqlalchemy

2. 匯入SQLAlchemy,並初始化DBSession:

# 匯入:from sqlalchemy import Column, String, create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_base# 建立對象的基類:Base = declarative_base()# 定義User對象:class User(Base):    # 表的名字:    __tablename__ = 'user'    # 表的結構:    id = Column(String(20), primary_key=True)    name = Column(String(20))# 初始化資料庫連接:# '資料庫類型+資料庫驅動名稱://使用者名稱:口令@機器地址:連接埠號碼/資料庫名'engine = create_engine('mysql+mysqlconnector://root:[email protected]:3306/test')# 建立DBSession類型:DBSession = sessionmaker(bind=engine)
3. 往資料庫表中添加一行記錄:
# 建立session對象:session = DBSession()# 建立新User對象:new_user = User(id='5', name='Bob')# 添加到session:session.add(new_user)# 提交即儲存到資料庫:session.commit()# 關閉session:session.close()
4. 從資料庫中查詢資料
# 建立Session:session = DBSession()# 建立Query查詢,filter是where條件,最後調用one()返回唯一行,如果調用all()則返回所有行:user = session.query(User).filter(User.id=='5').one()# 列印類型和對象的name屬性:print 'type:', type(user)print 'name:', user.name# 關閉Session:session.close()
5. 建立一個一對多的關係:

一個人有多本書:當我們查詢一個User對象時,該對象的books屬性將返回一個包含若干個Book對象的list

class User(Base):    __tablename__ = 'user'    id = Column(String(20), primary_key=True)    name = Column(String(20))    # 一對多:    books = relationship('Book')class Book(Base):    __tablename__ = 'book'    id = Column(String(20), primary_key=True)    name = Column(String(20))    # “多”的一方的book表是通過外部索引鍵關聯到user表的:    user_id = Column(String(20), ForeignKey('user.id'))


python學習筆記(十六) - ORM架構(SQLAlchemy)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.