python经典orm框架sqlalchemy

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

原文地址:https://www.cnblogs.com/wangbin2188/p/13614450.html