目录
[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中常用的数据库编程接口:
-
DB-API:Python的标准数据库API,支持多种数据库,包括MySQL、PostgreSQL、SQLite等。这是Python的官方数据库接口,可以通过安装相应的数据库驱动程序来使用。
-
MySQLdb:对MySQL数据库的Python接口,可以用于连接和操作MySQL数据库。
-
psycopg2:对PostgreSQL数据库的Python接口,可以用于连接和操作PostgreSQL数据库。
-
sqlite3:Python自带的SQLite数据库接口,可以直接连接和操作SQLite数据库。
-
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游标对象的详细解释:
-
创建游标对象 在使用数据库连接库(如
mysql-connector-python
、psycopg2
、sqlite3
等)时,可以使用cursor()
方法来创建游标对象。例如:pythoncursor = cnx.cursor()
-
执行SQL语句 游标对象提供了
execute()
方法来执行SQL语句。你需要将SQL语句作为参数传递给execute()
方法。例如:pythoncursor.execute("SELECT * FROM table_name")
-
获取结果集 执行查询语句后,可以使用游标对象的
fetchall()
、fetchone()
或fetchmany()
方法来获取结果集。pythonfetchall(): 获取所有查询结果的列表。 fetchone(): 获取下一行结果。 fetchmany(size): 获取指定行数的结果。
例如:
pythonresult = cursor.fetchall()
-
数据库事务 游标对象还提供了支持数据库事务的方法。你可以使用
commit()
方法提交更改,使用rollback()
方法回滚更改。例如:pythoncnx.commit()
-
关闭游标 在使用完游标对象后,应该关闭它以释放资源。你可以使用
close()
方法来关闭游标。例如:pythoncursor.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()