Python面试题:在 Python 中,如何连接并操作数据库?

在 Python 中,可以使用多种库来连接并操作数据库。常用的库有 sqlite3psycopg2(用于 PostgreSQL)、PyMySQL(用于 MySQL)、SQLAlchemy(一个 ORM 工具,支持多种数据库)。下面以 SQLite 和 MySQL 为例,介绍如何连接并操作数据库。

使用 sqlite3 库操作 SQLite 数据库

  1. 连接数据库
import sqlite3# 连接到 SQLite 数据库(如果数据库不存在,会自动创建)
conn = sqlite3.connect('example.db')# 创建游标对象
cursor = conn.cursor()
  1. 创建表
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER NOT NULL)''')
  1. 插入数据
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")# 提交事务
conn.commit()
  1. 查询数据
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()for row in rows:print(row)
  1. 更新数据
# 更新数据
cursor.execute("UPDATE users SET age = 26 WHERE name = 'Bob'")# 提交事务
conn.commit()
  1. 删除数据
# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")# 提交事务
conn.commit()
  1. 关闭连接
# 关闭游标和连接
cursor.close()
conn.close()

使用 PyMySQL 库操作 MySQL 数据库

  1. 安装 PyMySQL
pip install pymysql
  1. 连接数据库
import pymysql# 连接到 MySQL 数据库
conn = pymysql.connect(host='localhost',user='yourusername',password='yourpassword',database='yourdatabase'
)# 创建游标对象
cursor = conn.cursor()
  1. 创建表
# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(255) NOT NULL,age INT NOT NULL)''')
  1. 插入数据
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")# 提交事务
conn.commit()
  1. 查询数据
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()for row in rows:print(row)
  1. 更新数据
# 更新数据
cursor.execute("UPDATE users SET age = 26 WHERE name = 'Bob'")# 提交事务
conn.commit()
  1. 删除数据
# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")# 提交事务
conn.commit()
  1. 关闭连接
# 关闭游标和连接
cursor.close()
conn.close()

使用 SQLAlchemy 库操作数据库

  1. 安装 SQLAlchemy
pip install sqlalchemy
  1. 连接数据库
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker# 创建数据库引擎
engine = create_engine('sqlite:///example.db', echo=True)# 创建基类
Base = declarative_base()# 定义数据表
class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True, autoincrement=True)name = Column(String)age = Column(Integer)# 创建数据表
Base.metadata.create_all(engine)# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
  1. 插入数据
# 插入数据
new_user = User(name='Alice', age=30)
session.add(new_user)
session.commit()
  1. 查询数据
# 查询数据
users = session.query(User).all()
for user in users:print(user.name, user.age)
  1. 更新数据
# 更新数据
user = session.query(User).filter_by(name='Alice').first()
user.age = 31
session.commit()
  1. 删除数据
# 删除数据
user = session.query(User).filter_by(name='Alice').first()
session.delete(user)
session.commit()

这三个示例展示了如何使用 sqlite3PyMySQLSQLAlchemy 库连接并操作数据库。根据具体需求和数据库类型,可以选择合适的库来实现数据库操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/870153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlashAttention/ PagedAttention原理,大模型加速

1.1 GPU 硬件特点 由于 FlashAttention 计算 self-attention 的主要关键是有效的硬件使用,所以了解GPU内存和各种操作的性能特征是很有必要的。 以 A100 (40GB HBM) 为例,下面显示其内存层次结构的粗略图。SRAM内存分布在108个流式多处理器(SMs)上&…

基于 BERT 的非结构化领域文本知识抽取

文章目录 题目摘要方法实验 题目 食品测试的大型语言模型 论文地址:https://arxiv.org/abs/2103.00728 摘要 随着知识图谱技术的发展和商业应用的普及,从各类非结构化领域文本中提取出知识图谱实体及关系数据的需求日益增加。这使得针对领域文本的自动化…

千呼新零售2.0-OCR图像识别采购单视频介绍

千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体,线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

2024年公司加密软件推荐TOP10|公司最佳数据防泄密方案!

在当今数字化信息爆炸的时代,保护公司的数据免受泄密威胁至关重要。选择一款适合的加密软件不仅可以有效防止数据泄露,还能保障公司的商业机密和客户隐私。 1.固信软件 固信软件以其卓越的数据保护功能和可靠的安全性而著称。它采用先进的数据加密技术&…

springboot农产品商城-计算机毕业设计源码46732

摘 要 随着社会经济的发展和人们消费观念的升级,农产品电商行业逐渐壮大。但传统的农产品销售模式存在信息不透明、中间环节复杂等问题,而微信小程序作为一种便捷的移动应用平台,为农产品商城的建设提供了新的可能性。通过微信小程序的设计与…

九.核心动画 - 显式动画

引言 本篇博客紧接着上一篇的隐式动画开始介绍显式动画。隐式动画是创建动态页面的一种简单的直接的方式,也是UIKit的动画机制基础。但是它并不能涵盖所有的动画类型。 显式动画 接下来我们就来研究另外一种动画显式动画,它能够对一些属性做指定的动画…

Android焦点之InputWindows的更新(二)

再次回到InputMonitor#updateInputWindows(),调用SurfaceControl.Transaction#merge,之后,当WindowAnimator.java的animate()时发起apply();可以是线程"android.anim"或"binder"线程; frameworks/base/services/core/java/com/andr…

常用知识碎片 Vue3 ref和reactive (内含其他常用知识)

目录 ref和reactive ref reactive 总结: setup语法糖 语法糖是啥? Vue3 setup语法糖 Vue3 不使用setup语法糖示例: Vue3 使用setup语法糖示例: ref和eative主要区别 ref和reactive 在 Vue 3 中,ref 和 reac…

品牌渠道管控力度的平衡艺术

渠道管控力度要如何把握呢?是不是管控越严格就一定越好?例如,发现一次低价就处以高额罚款,发现一次窜货也重罚,其实处罚是对低价管控较为直接的一种方式,但并非处罚越重就一定能取得良好的管控效果。 比如品…

Java 中的 switch 语句:类型支持与限制

Java 中的 switch 语句:类型支持与限制 1、switch 语句支持的数据类型2、switch 语句不支持的数据类型3、总结 💖The Begin💖点点关注,收藏不迷路💖 在 Java 中,switch 语句是一种用于多分支选择的控制结构…

@SpringBootTest注解的用途是什么?

SpringBootTest注解是Spring Boot提供的一个用于测试的注解,主要用途是在测试过程中方便地创建一个应用上下文(ApplicationContext)。这个注解告诉Spring Boot去寻找一个主配置类(比如带有SpringBootApplication的类)&…

常见的负载均衡算法和实现方式

负载均衡的原理,并给出常见的负载均衡算法和实现方式 负载均衡是一种分布式系统设计策略,其目的是为了将用户请求分摊到多个服务器上,提高系统的可用性和响应速度。它通过动态地将工作负载分配给各个节点,避免单点过载并提升整体…

【编程范式】理解响应式编程(reactive programming)

文章目录 一、定义与特点二、核心概念三、应用场景四、优势与挑战五、总结 响应式编程(Reactive Programming)是一种面向数据流和变化传播的编程范式,其核心在于以非阻塞和异步的方式处理数据流,从而提高应用的响应性、可维护性和…

如何使用FreeFileSync:一款免费且专业的数据备份与文件同步软件

数据的重要性不言而喻,因此,定期做数据备份已经是每一个人的基本工作习惯了。 FreeFileSync 是一款强大专业且免费开源的 文件夹对比/同步/备份 软件工具。FreeFileSync通过比较其内容,日期或文件大小上的一个或多个文件夹,然后根…

android 图片轮播

在Android中,实现图片轮播(也称为图片滑动或图片轮转)通常涉及到使用ViewPager、RecyclerView配合PagerAdapter、RecyclerView.Adapter或者第三方库如Glide、Picasso来处理图片加载,以及一个定时器(如Handler、Timer、…

统信UOS桌面操作系统上删除系统升级后GRUB中的回滚条目与备份

原文链接:统信UOS删除升级后GRUB中的回滚条目与备份 Hello,大家好啊!今天给大家带来一篇关于在统信UOS桌面操作系统上删除系统升级后GRUB中的回滚条目与备份的文章。在进行系统升级后,GRUB引导菜单中可能会出现多个回滚条目和备份…

深入解析C++中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符

深入解析C中的特殊成员函数:构造函数、析构函数、拷贝构造函数与赋值操作符 在C编程的浩瀚宇宙中,构造函数、析构函数、拷贝构造函数和赋值操作符是构成对象生命周期和行为的四大基石。它们各自扮演着不可或缺的角色,确保了对象从创建到销毁…

2024年华为OD机试真题-找座位-C++-OD统一考试(C卷D卷)

2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述: 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。现在给出一排观众座位分布图,座位中存在已落座的观众,请计…

nginx正向代理、反向代理、负载均衡

nginx.conf nginx首要处理静态页面 反向代理 动态请求 全局模块 work processes 1; 设置成服务器内核数的两倍(一般不不超过8个超过8个反而会降低性能一般4个 1-2个也可以) netstat -antp | grep 80 查端口号 *1、events块:* 配置影响ngi…

qt list 控件

Qt中的列表控件主要包括QListView和QListWidget。以下是对这两个控件的详细介绍: 一、QListView控件 创建:在Qt Designer中,可以通过拖拽的方式创建一个ListView控件。在代码中,可以使用QListView *listView new QListView(thi…