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

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 库连接并操作数据库。根据具体需求和数据库类型,可以选择合适的库来实现数据库操作。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开源项目有哪些机遇与挑战?
  • 老年人在日常生活中可以做哪些简单的伸展运动来缓解身体僵硬?
  • Linux 调试命令记录
  • python压缩PDF方案(Ghostscript+pdfc)
  • Git仓库介绍
  • Vue get请求传递数组,springboot接受数组(ai生成)
  • 【uniapp微信小程序】uniapp微信小程序——页面通信
  • ChatGPT对话:Scratch编程中一个单词,如balloon,每个字母行为一致,如何优化编程
  • 第2章 大话 ASP.NET Core 入门
  • Python | Leetcode Python题解之第225题用队列实现栈
  • 【高中数学/指数、对数】已知9^m=10,a=10^m-11,b=8^m-9,则ab两数和0的大小关系是?(2022年全国统考高考真题)
  • 架构师机器学习操作 (MLOps) 指南
  • OR-152 IGBT光耦系列
  • wpf中ComboBox属性text 绑定变量后画面上不显示值
  • Github Action 自动部署更新静态网页服务
  • Debian下无root权限使用Python访问Oracle
  • Druid 在有赞的实践
  • exports和module.exports
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Javascript设计模式学习之Observer(观察者)模式
  • jdbc就是这么简单
  • Js基础知识(四) - js运行原理与机制
  • js算法-归并排序(merge_sort)
  • Linux快速复制或删除大量小文件
  • MobX
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node + FFmpeg 实现Canvas动画导出视频
  • php ci框架整合银盛支付
  • php的插入排序,通过双层for循环
  • Redux系列x:源码分析
  • RxJS: 简单入门
  • 七牛云假注销小指南
  • 系统认识JavaScript正则表达式
  • 云大使推广中的常见热门问题
  • 自动记录MySQL慢查询快照脚本
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 交换综合实验一
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (19)夹钳(用于送货)
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (windows2012共享文件夹和防火墙设置
  • (分布式缓存)Redis持久化
  • (理论篇)httpmoudle和httphandler一览
  • (六)DockerCompose安装与配置
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (七)Java对象在Hibernate持久化层的状态
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十三)Flask之特殊装饰器详解
  • (状压dp)uva 10817 Headmaster's Headache
  • .NET Core 2.1路线图
  • .NET Framework .NET Core与 .NET 的区别