Python 是一门十分灵活的编程语言,在数据库连接方面也同样颇有长处。Python 内置了多种数据库接口模块,可以和 MySQL、PostgreSQL、Oracle 等数据库创建连接并进行数据交互。下面,我们将来详细介绍 Python 和数据库的相关知识。
1. 数据库连接
Python 中最常用的连接数据库的方式是使用 Python DB-API 模块。DB-API 是 Python 定义的一组规范,其目的是提供一个平台无关的 API,使得在使用不同的数据库时,Python 代码的修改量尽量小。
Python 通过和各种数据库交互的接口库称为数据库驱动。大部分 Python 数据库驱动都支持 Python 数据库 API 规范,允许开发者使用统一的调用方式和语法来进行数据库操作。
下面是 Python 与 SQLite3 数据库的连接代码示例:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 创建游标对象
c = conn.cursor()
# 执行 SQL 语句
c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text,
qty real, price real)''')
# 插入一条记录
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# 提交更改
conn.commit()
# 关闭数据库连接
conn.close()
```
在上例中,使用了 Python 内置的sqlite3库连接了名为example.db的SQLite3数据库。首先通过sqlite3.connect()方法创建了一个连接对象conn,然后使用conn.cursor()方法创建了一个游标对象c,游标对象用于执行SQL语句和处理返回结果。接着,使用c.execute()方法执行了一个创建表的SQL语句和一条插入记录的SQL语句。最后,使用conn.commit()方法提交更改,并使用conn.close()方法关闭了连接。
2. 数据库查询
Python 数据库查询可以使用游标对象的 fetchone()、fetchall() 和 fetchmany() 方法。常用的是 fetchall() 方法,返回所有记录的一个列表;fetchone() 方法则只返回一条记录;fetchmany(num) 方法则返回指定数量的记录。
下面是一个查询 SQLite3 数据库的示例:
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 创建游标对象
c = conn.cursor()
# 执行SELECT语句
c.execute('SELECT * FROM stocks')
result = c.fetchall()
print(result)
# 关闭数据库连接
conn.close()
```
在上例中,执行了一个 SELECT 查询语句,使用 c.fetchall() 方法获取了返回结果,并打印了结果。
3. 数据库操作
Python 中使用游标对象的 execute() 方法执行 SQL 语句,操作数据库。这些 SQL 语句可以是执行查询,插入,更新或删除等。
下面是一个使用 Python 操作 MySQL 数据库的示例:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='test')
# 创建游标对象
c = conn.cursor()
# 执行 SQL 语句
c.execute('SELECT * FROM users')
# 输出查询结果
print(c.fetchall())
# 关闭数据库连接
conn.close()
```
在上例中,使用 PyMySQL 连接到一个名为 test 的 MySQL 数据库,并使用 c.execute() 方法执行了一个 SELECT 查询语句,获取了返回结果并打印。
4. 数据库 ORM 框架
ORM(Object-Relational Mapping)是 “对象和关系数据库映射”的缩写,它可以自动将数据库中的表格转换为 Python 中的对象,避免了繁琐的 SQL 语句编写和处理过程。
Python 中有很多流行的 ORM 框架,如 SQLAlchemy、Django ORM 等。下面是一个使用 SQLAlchemy 框架连接 MySQL 数据库的示例:
```python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
# 创建连接引擎
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test')
# 创建会话
DBSession = sessionmaker(bind=engine)
session = DBSession()
# 创建实体类
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(32))
age = Column(Integer)
# 通过实体类执行增删改查操作
user = User(name='John', age=18)
session.add(user)
session.commit()
```
在上例中,使用 SQLAlchemy 框架连接了 MySQL 数据库,并使用 declarative_base() 创建了实体类 User,并通过 session 对象执行了一条插入 SQL 语句,将一条记录插入了 users 表中。
5. 总结
本文对 Python 和数据库的交互做了介绍,主要内容包括数据库连接,数据库查询,数据库操作和数据库 ORM 框架的使用。使用 Python 可以连接多种类型的数据库,并且内置的数据库接口模块可以使得不同的数据库之间代码的修改量尽可能小,使得 Python 更加适合于数据库应用开发。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/
发表评论 取消回复