Python零基础入门:操作数据库

Python 提供了多种方式来连接和操作不同类型的数据库。下面分别介绍如何连接 SQLite 和 MySQL 数据库。

连接 SQLite 数据库

SQLite 是一种嵌入式数据库,它不需要单独的服务器进程,使用起来非常方便,适合小型项目和学习使用。Python 内置了 sqlite3 模块,无需额外安装即可使用。

以下是连接 SQLite 数据库的基本步骤:

import sqlite3

# 连接到 SQLite 数据库
# 如果数据库文件不存在,会自动创建
conn = sqlite3.connect('example.db')

# 创建一个游标对象,用于执行 SQL 语句
cursor = conn.cursor()

# 执行 SQL 语句创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    age INTEGER
)
''')

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

连接 MySQL 数据库

MySQL 是一种广泛使用的开源关系型数据库,需要单独安装服务器和客户端。Python 可以使用 mysql-connector-python 或 pymysql 等库来连接 MySQL 数据库。

以下是使用 pymysql  连接 MySQL 数据库的基本步骤:

import pymysql

# 连接到 MySQL 数据库
DB_CONFIG = {
    "host":"localhost",
    "user":"your_username",
    "password":"your_password",
    "database":"your_database",
    "port" : 3306
}
# 创建数据库连接
conn = pymysql.connect(**DB_CONFIG)
# 创建游标对象
cursor = conn.cursor()

# 执行 SQL 语句创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    age INT
)
''')

# 提交事务
conn.commit()

# 关闭游标和连接
cursor.close()
conn.close()

 SQLite增删改查完整示例

import sqlite3

# 1. 连接数据库
conn = sqlite3.connect('school.db')
cursor = conn.cursor()

# 2. 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS students (
                id INTEGER PRIMARY KEY,
                name TEXT NOT NULL,
                age INTEGER,
                gender TEXT)''')
conn.commit()

# 3. 插入数据(增)
# 单条插入
cursor.execute("INSERT INTO students (name, age, gender) VALUES (?, ?, ?)", 
               ('张三', 20, '男'))
# 批量插入
students = [('李四', 22, '女'), ('王五', 21, '男'), ('赵六', 19, '女')]
cursor.executemany("INSERT INTO students (name, age, gender) VALUES (?, ?, ?)", students)
conn.commit()

# 4. 查询数据(查)
# 查询所有
cursor.execute("SELECT * FROM students")
print("所有学生:")
for row in cursor.fetchall():
    print(row)

# 条件查询
cursor.execute("SELECT * FROM students WHERE age > ?", (20,))
print("\n年龄大于20的学生:")
for row in cursor.fetchall():
    print(row)

# 5. 更新数据(改)
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (23, '李四'))
conn.commit()
print("\n更新后的李四信息:")
cursor.execute("SELECT * FROM students WHERE name = '李四'")
print(cursor.fetchone())

# 6. 删除数据(删)
cursor.execute("DELETE FROM students WHERE name = ?", ('赵六',))
conn.commit()
print("\n删除赵六后的学生列表:")
cursor.execute("SELECT * FROM students")
for row in cursor.fetchall():
    print(row)

# 7. 关闭连接
conn.close()

关键操作说明

  1. 参数化查询

    • 使用 ? 作为占位符(SQLite)

    • MySQL使用 %s 作为占位符

    • 防止SQL注入攻击

  2. 事务控制

    • conn.commit():提交更改

    • conn.rollback():回滚操作

  3. 结果获取

    • fetchall():获取所有结果

    • fetchone():获取单条记录

    • fetchmany(size):获取指定数量记录

  4. 数据类型映射

    Python类型SQLite类型MySQL类型
    NoneNULLNULL
    intINTEGERINT
    floatREALFLOAT
    strTEXTVARCHAR
    bytesBLOBBLOB

SQLite vs MySQL

特性SQLiteMySQL
存储方式单文件独立服务
适用场景移动端/小型应用中大型Web应用
并发能力弱(文件锁)强(行级锁)
安装需求Python内置需单独安装服务器
连接方式直接连接文件TCP/IP连接
性能简单操作快复杂查询/高并发优
数据类型动态类型严格类型

 通用步骤:

重要原则

  • 始终使用参数化查询

  • 操作后及时提交事务

  • 使用try-finally确保关闭连接

 以上就是 Python 操作 SQLite 和 MySQL 数据库的基本方法和操作示例。希望对你有所帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不爱说话的分院帽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值