本节内容我们使用sqlalchemy框架完成Sqlite3数据库表的增删查改等常规操作,相较于原生Sqlite的数据库操作,sqlalchemy通过ORM映射完成实体对象的映射,通过映射关系完成对象和数据的转换,完成数据的操作。
①在项目中使用pip命令安装sqlalchemy框架
命令: pip install sqlalchemy
②创建实体映射对象User数据库表
# 引入sqlalchemy依赖 from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import declarative_base, sessionmaker # 申明基类对象 Base = declarative_base() # 定义user表实体对象 class User(Base): # 定义表名 __tablename__ = 'user' # 定义字段 id = Column(Integer, primary_key=True) name = Column(String(255)) age = Column(Integer) def __repr__(self): return "User(id:{},name:{},age:{})".format(self.id, self.name, self.age)
③创建sqlite3的session数据库连接
# 引入sqlalchemy依赖 from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import declarative_base, sessionmaker # 申明基类对象 Base = declarative_base() # sqlite连接初始化 class SqliteSqlalchemy(object): def __init__(self): # 创建sqlite连接引擎 engine = create_engine('sqlite:///./sqlalchemy.db', echo=True) # 创建表 Base.metadata.create_all(engine, checkfirst=True) # 创建sqlite的session连接对象 self.session = sessionmaker(bind=engine)()
④新增一条用户信息数据
- 代码实现
# 引入sqlalchemy依赖 from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import declarative_base, sessionmaker # 申明基类对象 Base = declarative_base() # 定义user表实体对象 class User(Base): # 定义表名 __tablename__ = 'user' # 定义字段 id = Column(Integer, primary_key=True) name = Column(String(255)) age = Column(Integer) def __repr__(self): return "User(id:{},name:{},age:{})".format(self.id, self.name, self.age) class SqliteSqlalchemy(object): def __init__(self): # 创建Sqlite连接引擎 engine = create_engine('sqlite:///./sqlalchemy.db', echo=True) # 创建表 Base.metadata.create_all(engine, checkfirst=True) # 创建Sqlite的session连接对象 self.session = sessionmaker(bind=engine)() if __name__ == '__main__': # 初始化Sqlite数据库连接,获取数据库session连接 session = SqliteSqlalchemy().session # 新增一条用户信息数据 user = User(name='xiaoming', age=23) session.add(user) session.commit() # 关闭数据库session连接 session.close()
- 执行结果
⑤新增多条用户信息数据
- 代码实现
if __name__ == '__main__': # 初始化Sqlite数据库连接,获取数据库session连接 session = SqliteSqlalchemy().session # 新增多条用户信息数据 datas = [ User(name='张三', age=20), User(name='李四', age=21), User(name='王五', age=22), ] session.add_all(datas) session.commit() # 关闭数据库session连接 session.close()
- 执行结果
⑥查询表中全部用户数据
- 代码实现
if __name__ == '__main__': # 初始化Sqlite数据库连接,获取数据库session连接 session = SqliteSqlalchemy().session # 查询user用户表中的全部数据 result = session.query(User.id, User.name, User.age).all() print(result) # 关闭数据库session连接 session.close()
- 执行结果
⑦根据用户ID更新用户数据
- 代码实现
if __name__ == '__main__': # 初始化Sqlite数据库连接,获取数据库session连接 session = SqliteSqlalchemy().session # 根据ID更新用户数据 user_id = 1 session.query(User).filter(User.id == user_id).update({User.name: "王五", User.age: 18}) session.commit() # 关闭数据库session连接 session.close()
- 执行结果
⑧ 根据用户ID删除用户数据
- 代码实现
if __name__ == '__main__': # 初始化Sqlite数据库连接,获取数据库session连接 session = SqliteSqlalchemy().session # 根据id删除数据 user_id = 1 del_count = session.query(User).filter(User.id == user_id).delete() print('删除数目:', del_count) session.commit() # 关闭数据库session连接 session.close()
- 执行结果
六月份最后一篇,关于使用sqlalchemy完成Sqlite3数据库表的增、删、查、改操作案例到这里就结束了,下期见。。。。。。