当前位置: 首页 > news >正文

网站备案信息批量查询app开发培训课程

网站备案信息批量查询,app开发培训课程,沈阳工务轨道建设网站,搭建个网站需要多少钱上次发布《多种方式访问mysql的对比分析》一文后#xff0c;有读者留言#xff0c;说SQLAlchemy的使用方法没讲清楚#xff0c;只有一段简短的介绍#xff0c;演示代码也比较模糊#xff0c;SQLAlchemy在实际项目运用非常广泛#xff0c;由于其支持 ORM 模型#xff0c;…上次发布《多种方式访问mysql的对比分析》一文后有读者留言说SQLAlchemy的使用方法没讲清楚只有一段简短的介绍演示代码也比较模糊SQLAlchemy在实际项目运用非常广泛由于其支持 ORM 模型能够将表映射为类让你用Python类的方式来操作数据库而不需要直接写SQL语句是面向对象访问数据库不可或缺的一个库根据需求设计数据库结构和操作逻辑可以大大提高开发效率和代码可维护性。今天风云将该库的详细使用方法重新整理了发出来供大家参考欢迎留言讨论。 为什么还要用SQLAlchemy呢原因有几个 1.简洁SQLAlchemy让你用Python代码来操作数据库代码更简洁也更容易理解。 2.安全它能帮助你避免SQL注入等安全问题让你的数据库更安全。 3.灵活SQLAlchemy支持多种数据库比如MySQL、PostgreSQL、SQLite等你只需要改一下配置就能在不同的数据库之间切换。 SQLAlchemy 包括两个核心组件 SQLAlchemy Core提供底层 SQL 构造和数据库连接。SQLAlchemy ORM实现面向对象的 ORM 映射。 1. 安装 SQLAlchemy 使用 pip 安装 pip install sqlalchemy 2. 数据库连接 使用 create_engine 创建数据库连接 from sqlalchemy import create_engine # 替换为实际的数据库 URL engine create_engine(sqlite:///example.db)  # SQLite 示例 # MySQL 示例: mysqlpymysql://user:passwordhost/dbname 3. 使用 SQLAlchemy Core 3.1 创建表 使用 MetaData 和 Table 定义表结构 from sqlalchemy import Table, Column, Integer, String, MetaData,create_engineengine create_engine(sqlite:///example.db) # SQLite 示例数据库 metadata MetaData() # 元数据对象users Table( # 创建表users, metadata, # 表名Column(id, Integer, primary_keyTrue), # id字段Column(name, String(50)), # name字段Column(age, Integer) # age字段 )metadata.create_all(engine) # 创建表 3.2 插入数据 使用 insert() 插入数据 from sqlalchemy import insertwith engine.connect() as conn: # 连接数据库stmt insert(users).values(nameAlice, age30) # 插入数据conn.execute(stmt) # 执行插入语句 3.3 查询数据 使用 select() 查询 from sqlalchemy import selectwith engine.connect() as conn: # 连接数据库stmt select(users) # 查询数据result conn.execute(stmt) # 执行查询语句for row in result: # 遍历结果print(row) 4. 使用 SQLAlchemy ORM 4.1 定义模型 使用 ORM 的 declarative_base 定义模型 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, StringBase declarative_base() # 创建基类class User(Base): # 创建User类__tablename__ users # 表名id Column(Integer, primary_keyTrue) # id字段name Column(String(50)) # name字段age Column(Integer) # age字段 4.2 创建表 创建表结构 Base.metadata.create_all(engine) 4.3 创建会话 使用 sessionmaker 创建会话 from sqlalchemy.orm import sessionmakerSession sessionmaker(bindengine) # 创建Session会话类 session Session() 4.4 增删改查 插入数据 new_user User(nameBob, age25) # 创建新用户session.add(new_user)# 添加新用户到sessionsession.commit() # 提交事务 查询数据 users session.query(User).all() # 查询所有用户 for user in users: # 遍历查询结果print(user.name, user.age) 更新数据 user session.query(User).filter_by(nameBob).first() # 查询用户 user.age 26session.commit() # 提交事务 删除数据 user session.query(User).filter_by(nameBob).first() # 查询具体用户定位到第一条记录session.delete(user) # 删除用户 session.commit() # 提交事务 5. 使用关系映射 定义一对多关系 from sqlalchemy import ForeignKeyfrom sqlalchemy.orm import relationshipclass Post(Base):__tablename__ posts # 表名id Column(Integer, primary_keyTrue) # id字段title Column(String(100)) # title字段user_id Column(Integer, ForeignKey(users.id)) # 定义外键user relationship(User, back_populatesposts) # 关联关系User.posts relationship(Post, order_byPost.id, back_populatesuser) # 关联关系# 插入关联数据 user User(nameCharlie)post1 Post(titlePost 1, useruser)post2 Post(titlePost 2, useruser)session.add(user) # 添加关联数据session.add_all([post1, post2]) # 添加所有关联session.commit() # 提交事务#查询关联数据 user session.query(User).filter_by(nameCharlie).first() # 查询关联数据for post in user.posts: # 遍历关联数据print(post.title) 6. 使用事务 手动管理事务 from sqlalchemy.exc import SQLAlchemyErrortry:with session.begin(): # 开启事务user User(nameDave, age40) # 创建新用户session.add(user) # 添加新用户到session except SQLAlchemyError as e: # 如果发生异常回滚事务print(fTransaction failed: {e})session.rollback() # 回滚事务 7. 完整的封装类 最后风云按惯例将此使用封装为一个完整的类大家有需要有的自取 from sqlalchemy import create_engine, Column, Integer, String, exc from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerBase declarative_base() # 创建基类# 定义表模型 class User(Base):__tablename__ users # 表名id Column(Integer, primary_keyTrue, autoincrementTrue) # id字段name Column(String(50), nullableFalse) # name字段age Column(Integer, nullableFalse) # age字段class MySQLHandler:def __init__(self, user, password, host, database):初始化数据库连接和会话try:url fmysqlpymysql://{user}:{password}{host}/{database} # 创建数据库连接self.engine create_engine(url, echoFalse) # 数据库引擎Base.metadata.create_all(self.engine) # 创建表self.Session sessionmaker(bindself.engine) # 创建会话except exc.SQLAlchemyError as e:print(fError initializing database: {e})def add_user(self, name, age):添加用户session self.Session() try:new_user User(namename, ageage) # 创建新用户session.add(new_user) # 添加新用户到sessionsession.commit() # 提交事务print(fUser {name} added successfully!)except exc.SQLAlchemyError as e: # 如果发生异常回滚事务session.rollback() # 执行回滚print(fError adding user: {e})finally:session.close() # 关闭会话def get_users(self):查询所有用户session self.Session()try:users session.query(User).all() # 查询所有用户return [{id: user.id, name: user.name, age: user.age} for user in users]except exc.SQLAlchemyError as e: # 如果发生异常返回空print(fError fetching users: {e})return []finally:session.close()def update_user(self, user_id, nameNone, ageNone):更新用户信息session self.Session()try:user session.query(User).filter_by(iduser_id).first() # 查询用户if not user: # 如果用户不存在返回print(fUser with ID {user_id} not found.)returnif name:user.name nameif age:user.age agesession.commit() # 提交事务print(fUser {user_id} updated successfully!)except exc.SQLAlchemyError as e: # 如果发生异常回滚事务session.rollback()print(fError updating user: {e})finally:session.close()def delete_user(self, user_id):删除用户session self.Session()try:user session.query(User).filter_by(iduser_id).first() # 查询用户if not user: # 如果用户不存在返回print(fUser with ID {user_id} not found.)returnsession.delete(user) # 删除用户session.commit() # 提交事务print(fUser {user_id} deleted successfully!)except exc.SQLAlchemyError as e: # 如果发生异常回滚事务session.rollback()print(fError deleting user: {e})finally:session.close()def transaction_example(self):事务操作示例session self.Session()try:user1 User(nameAlice, age30) # 创建2个新用户user2 User(nameBob, age25) # 添加多个用户session.add(user1) # 添加新用户到sessionsession.add(user2)# 模拟事务中的错误# Uncomment the line below to raise an exception and trigger a rollback# raise ValueError(Simulated error!)session.commit() # 提交事务print(Transaction completed successfully!)except (exc.SQLAlchemyError, ValueError) as e: # 如果发生异常回滚事务session.rollback()print(fTransaction failed: {e})finally:session.close()# 使用示例 if __name__ __main__:# 初始化数据库连接db_handler MySQLHandler(userroot, passwordpassword123, hostlocalhost, databasetest_db)# 添加用户db_handler.add_user(nameJohn Doe, age28)# 查询用户users db_handler.get_users()print(Users:, users)# 更新用户db_handler.update_user(user_id1, nameJane Doe, age32)# 删除用户db_handler.delete_user(user_id1)# 事务示例db_handler.transaction_example()
http://www.hkea.cn/news/14507344/

相关文章:

  • 做电子商务网站 除了域名 网页设计 还有服务器 和网站空间做设计转钱网站
  • 信息化建设好的企业网站有哪些wordpress文章缩略图
  • WordPress四栏主题seo 网站文章一般要多少字
  • 怎么理解网站开发住房和建设局官网
  • 小企业网站建设和管理免费小程序怎么赚钱
  • 网站建设公司下载网站首页关键词设置
  • 那些语言可以建网站网站验收标准
  • 上海城乡建设部网站付费阅读wordpress
  • 深圳网站设计收费标准手机网站建设报价多少
  • seo两个域名一个网站有影响网页源代码下载
  • 温州专业微网站制作微信引流推广
  • 昆明品牌网站建设智慧房产信息管理平台
  • 企业网站整站旅游响应式网站建设
  • 网站做常规优化做网站帮外国人淘宝
  • 廊坊集团网站建设黄聪开发wordpress主题
  • 网站规划在网站建设中的作用是注册网址免费
  • 河源市建设网站打通WordPress和微信公众号
  • 简述电子商务网站开发的基本原则手机网站 图标
  • 福州建网站哪家公司好六种常见的网络广告类型
  • 四会市住房和城乡建设局网站js网站开发视频
  • 美食网站的建设大连建设工程集团有限公司
  • 郫都区规划建设局网站外贸做哪些网站平台好
  • 定制型网站建设扬州网站开发
  • 做网站一定要注册域名吗wordpress优化网站打开速度
  • 网站 托管保定建站模板搭建
  • 视觉差的网站朝阳seo建站
  • 淘宝客网站需要备案介绍几个免费的网站
  • 多个网站如何做301智能建站开发
  • 找什么样的公司帮助做网站石家庄网站制作
  • 打开国外网站很慢宜昌手机网站制作