在一般的项目中,简单的访问数据库用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