在一般的項目中,簡單的訪問數據庫用pymysql就可以了,手寫一些SQL也沒有什么問題,但是對於一個大型系統,可能面對多次的數據庫增刪改查操作,如果都用手寫SQL實現,代碼會顯得很難看,開發效率也比較低,這個時候就推薦使用orm框架了。
python的orm框架有很多,我最早接觸的是django的內嵌orm,用起來的確很不錯,但目前並沒有獨立出來。
獨立的框架里面,比較經典的就是本文的主角sqlalchemy了。
from sqlalchemy import Column, String, create_engine, Integer from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base # 創建對象的基類: Base = declarative_base() # 初始化數據庫連接: engine = create_engine('mysql+pymysql://root:******@localhost:3306/scheduler') # 定義User對象: class User(Base): # 表的名字: __tablename__ = 'user' # 表的結構: id = Column(String(20), primary_key=True) name = Column(String(20)) age = Column(Integer) def __repr__(self): return 'User(id={id},name={name},age={age})'.format(id=self.id, name=self.name, age=self.age) # 創建所有定義的表到數據庫中 def init_db(): Base.metadata.create_all(engine) # 從數據庫中刪除所有定義的表 def drop_db(): Base.metadata.drop_all(engine) if __name__ == '__main__': drop_db() init_db() # 創建DBSession類型: DBSession = sessionmaker(bind=engine) # 創建session對象: session = DBSession() # 創建新User對象: new_user = User(id='7', name='ali', age=11) user1 = User(id='8', name='mary', age=12) user2 = User(id=1, name='bob', age=12) # 插入數據 session.add(new_user) session.add_all([user2, user1]) # 提交即保存到數據庫: session.commit() # 更新數據 session.query(User).filter(User.name == 'ali').update({'name': 'da'}) # 刪除數據 session.query(User).filter(User.id == 1).delete() session.commit() # 查詢數據 ret = session.query(User).all() print(ret) session.close()
sqlalchemy 的功能當然不止於此,隨着后面的學習,我會繼續補充到這里。
參考:
https://www.liaoxuefeng.com/wiki/1016959663602400/1017803857459008