sqlalchemy1.3官方文档地址

    声明映射

    1. from sqlalchemy.ext.declarative import declarative_base
    2. Base = declarative_base()
    1. class User(Base):
    2. #__tablename__是必须的(表名)
    3. __tablename__ = 'users'
    4. #数据列,至少一个Column是主键的一部分
    5. id = Column(Integer, primary_key=True)
    6. loginnum = Column(String(255))
    7. password = Column(String(255))
    8. #重写__repr__,输出实例化对象信息
    9. def __repr__(self):
    10. return "<User(id='%s', loginnum='%s',password='%s')>" % (
    11. self.id, self.loginnum, self.password)

    创建会话

    1. def sql_connect():
    2. #创建数据库连接
    3. #针对不同类型的数据库,create_engine提供了不同的参数格式填写,这里使用的是mysql
    4. engine = create_engine(
    5. "mysql://root:root@localhost:3306/test?charset=utf8", encoding='utf-8')
    6. #定义Session类
    7. DBSession = sessionmaker(bind=engine)
    8. #这个定制的Session类将创建绑定到我们数据库的新Session对象
    9. session = DBSession()
    10. #针对数据库中不存在的表,发出CREATE TABLE
    11. Base.metadata.create_all(engine)
    12. return session

    添加操作

    1. db = sql_connect()
    2. db_add = User(loginnum="a123",password="123")
    3. db.add(db_add)
    4. db.commit()
    5. db.close()

    查询操作

    1. db = sql_connect()
    2. db_user = db.query(User).filter().all() #使用all(),返回所有查询结果,数据类型为list
    3. db_user = db.query(User).filter().first() #使用first(),返回查询结果中的第一条数据
    4. print(db_user)
    5. 输出结果:
    6. [<User(id='1', loginnum='a123',password='123')>]

    更新操作

    1. db = sql_connect()
    2. db_user = db.query(User).filter().all()
    3. print(db_user)
    4. db_user[0].password = 456
    5. db_user = db.query(User).filter().all()
    6. print(db_user)
    7. db.commit()
    8. db.close()
    9. 输出结果:
    10. [<User(id='1', loginnum='a123',password='123')>]
    11. [<User(id='1', loginnum='a123',password='456')>]

    删除操作

    1. db = sql_connect()
    2. db = sql_connect()
    3. db_user = db.query(User).filter().first()
    4. print(db_user)
    5. db.delete(db_user)
    6. db.commit()
    7. db_user = db.query(User).filter().all()
    8. print(db_user)
    9. 输出结果:
    10. [<User(id='1', loginnum='a123',password='456')>]
    11. []
    12. 若以all()查询,执行delete方法时,直接给整个list会出现报错,必须指定list中的元素,或用first()单独查询一条数据进行删除