Python 学习笔记(八)—— 数据库操作

目录

一、数据库编程接口

二、常见的数据库函数及其参数说明

三、数据库操作

[3.1 SQLite3](#3.1 SQLite3)

[3.2 MySQL Connector](#3.2 MySQL Connector)

[3.3 PostgreSQL](#3.3 PostgreSQL)

[3.4 SQLAlhemy](#3.4 SQLAlhemy)

四、游标对象

五、创建数据表


一、数据库编程接口

在Python中,有多种数据库编程接口可以使用,其中最常用的是Python的标准数据库API,也被称为DB-API。该接口定义了一组函数和方法,用于连接、查询和操作各种数据库。

以下是Python中常用的数据库编程接口:

  1. DB-API:Python的标准数据库API,支持多种数据库,包括MySQL、PostgreSQL、SQLite等。这是Python的官方数据库接口,可以通过安装相应的数据库驱动程序来使用。

  2. MySQLdb:对MySQL数据库的Python接口,可以用于连接和操作MySQL数据库。

  3. psycopg2:对PostgreSQL数据库的Python接口,可以用于连接和操作PostgreSQL数据库。

  4. sqlite3:Python自带的SQLite数据库接口,可以直接连接和操作SQLite数据库。

  5. pyodbc:对ODBC (Open Database Connectivity) 的Python接口,可以用于连接和操作多种数据库。

二、常见的数据库函数及其参数说明

在Python中,使用数据库需要使用连接对象和游标对象来进行操作。下面是几个常见的数据库函数及其参数说明:

connect()函数:用于创建数据库连接对象。

  • host:数据库服务器的主机名或IP地址。
  • user:登录数据库时使用的用户名。
  • password:登录数据库时使用的密码。
  • database:要连接的数据库名。
  • port:数据库服务器的端口号,默认为数据库服务器的默认端口号。

cursor()函数:用于创建数据库游标对象。

  • cursorclass:游标对象的类,默认为cursor类。

execute()函数:用于执行SQL语句。

  • sql:要执行的SQL语句。
  • args:SQL语句中的参数值。使用参数可以防止SQL注入攻击。

fetchone()函数:用于从结果集中获取下一行。

fetchall()函数:用于从结果集中获取所有行。

commit()函数:用于提交事务。

rollback** ()**函数:用于回滚事务。

close()函数:用于关闭连接。

三、数据库操作

在Python中,可以使用多种库来进行数据库操作,包括:

3.1 SQLite3

SQLite3是Python内置的轻量级数据库,使用简单,适合小型项目和原型开发。可以使用sqlite3模块来操作SQLite数据库。

python 复制代码
import sqlite3

# 连接数据库
conn = sqlite3.connect('example.db')

# 创建游标
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users
                  (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)''')

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 30))

# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

# 提交事务并关闭连接
conn.commit()
conn.close()
 

3.2 MySQL Connector

MySQL Connector是Python操作MySQL数据库的官方驱动程序。可以使用mysql-connector-python库来连接和操作MySQL数据库

python 复制代码
import mysql.connector

# 连接数据库
conn = mysql.connector.connect(
   host="localhost",
   user="username",
   password="password",
   database="database_name"
)

# 创建游标对象
cursor = conn.cursor()

# 执行SQL语句
cursor.execute("SELECT * FROM table_name")

# 获取查询结果
result = cursor.fetchall()

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

3.3 PostgreSQL

PostgreSQL是一个强大的开源关系型数据库,可以使用psycopg2库来连接和操作PostgreSQL数据库。

python 复制代码
import psycopg2

# 连接数据库
conn = psycopg2.connect(
   host='localhost', 
   port=5432, 
   user='username', 
   password='password', 
   dbname='database')

# 创建游标
cursor = conn.cursor()

# 执行SQL语句
cursor.execute('SELECT * FROM table_name')

# 获取查询结果
result = cursor.fetchall()

# 提交数据库事务
conn.commit()

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

3.4 SQLAlhemy

SQLAlchemy是一个Python的SQL工具包,提供了一种统一的API来进行关系型数据库操作。

python 复制代码
from sqlalchemy import create_engine, MetaData, Table

# 连接数据库
engine = create_engine('数据库类型+数据库驱动://用户名:密码@主机名:端口号/数据库名')

# 获取元数据对象
metadata = MetaData(bind=engine)

# 获取表对象
table = Table('table_name', metadata, autoload=True)

# 执行SQL语句
result = engine.execute(table.select())

# 获取查询结果
for row in result:
    print(row)

# 关闭连接
engine.dispose()

四、游标对象

在Python中,游标对象 (Cursor object)用于执行SQL语句并处理查询结果。它允许你在数据库中执行查询、插入、更新和删除操作,并获取返回的结果集(如果有的话)。

以下是一些关于Python游标对象的详细解释:

  1. 创建游标对象 在使用数据库连接库(如mysql-connector-pythonpsycopg2sqlite3等)时,可以使用cursor()方法来创建游标对象。例如:

    python 复制代码
    cursor = cnx.cursor()
  2. 执行SQL语句 游标对象提供了execute()方法来执行SQL语句。你需要将SQL语句作为参数传递给execute()方法。例如:

    python 复制代码
    cursor.execute("SELECT * FROM table_name")
  3. 获取结果集 执行查询语句后,可以使用游标对象的fetchall()fetchone()fetchmany()方法来获取结果集。

    python 复制代码
    fetchall():        获取所有查询结果的列表。
    fetchone():        获取下一行结果。
    fetchmany(size):   获取指定行数的结果。

    例如:

    python 复制代码
    result = cursor.fetchall()
  4. 数据库事务 游标对象还提供了支持数据库事务的方法。你可以使用commit()方法提交更改,使用rollback()方法回滚更改。例如:

    python 复制代码
    cnx.commit()
  5. 关闭游标 在使用完游标对象后,应该关闭它以释放资源。你可以使用close()方法来关闭游标。例如:

    python 复制代码
    cursor.close()

    关闭游标后,你将无法再使用它执行任何操作。

五、创建数据表

要在Python中创建数据表,您可以使用许多不同的方法和库。以下是一些常用的方法:

  • SQLite数据库 : 使用sqlite3库,您可以在Python中创建和管理SQLite数据库,并创建数据表。以下是一个示例代码:
python 复制代码
import sqlite3

# 连接到数据库或创建一个新的数据库
conn = sqlite3.connect('mydatabase.db')

# 创建一个游标对象
cursor = conn.cursor()

# 创建一个数据表
cursor.execute('''CREATE TABLE IF NOT EXISTS mytable
                  (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)''')

# 提交更改并关闭连接
conn.commit()
conn.close()
  • MySQL数据库: 使用mysql-connector-python库或pymysql库,您可以在Python中创建和管理MySQL数据库,并创建数据表。以下是一个示例代码:
python 复制代码
import mysql.connector

# 连接到MySQL数据库
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)

# 创建一个游标对象
cursor = conn.cursor()

# 创建一个数据表
cursor.execute('''CREATE TABLE IF NOT EXISTS mytable
                  (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)''')

# 提交更改并关闭连接
conn.commit()
conn.close()
  • PostgreSQL数据库 : 使用psycopg2库,您可以在Python中创建和管理PostgreSQL数据库,并创建数据表。以下是一个示例代码:
python 复制代码
import psycopg2

# 连接到PostgreSQL数据库
conn = psycopg2.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)

# 创建一个游标对象
cursor = conn.cursor()

# 创建一个数据表
cursor.execute('''CREATE TABLE IF NOT EXISTS mytable
                  (id SERIAL PRIMARY KEY, name VARCHAR(255), age INT)''')

# 提交更改并关闭连接
conn.commit()
conn.close()
相关推荐
小蒜学长19 小时前
基于Spring Boot的火灾报警系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
GoldenaArcher19 小时前
OpenAPI Specification 系列笔记 III
笔记
福赖19 小时前
《MySQL基础——C 语言链接》
c语言·数据库·mysql
KIDAKN19 小时前
Redis 分布式锁
数据库·redis·分布式
程序员的世界你不懂19 小时前
【Flask】测试平台开发,工具模块开发 第二十二篇
android·python·flask
程序新视界20 小时前
如何为MySQL中的JSON字段设置索引
数据库·mysql
Ultipa20 小时前
查询语言的进化:SQL之后,为什么是GQL?数据世界正在改变
数据库·sql·图数据库·gql
LB211220 小时前
SQL隐式链接显式连接
大数据·数据库·sql
happilyaaa20 小时前
B站 韩顺平 笔记 (Day 27)
笔记
薰衣草233320 小时前
滑动窗口(2)——不定长
python·算法·leetcode