python代码和数据库交互

Python是一门流行的编程语言,它提供了许多模块来帮助我们与数据库进行交互。Python与数据库的交互可以通过多种方式进行,包括使用标准模块如sqlite3、MySQLdb和psycopg2,或使用ORM(对象关系映射)工具如SQLAlchemy和Django ORM。下面我们就来详细介绍一下这些模块以及如何使用它们。

1. SQLite3

SQLite3是一种轻量级的关系型数据库,由于它的简单性和高效性,经常用于小型应用程序中。在Python中,可以使用标准模块sqlite3来访问SQLite3数据库。首先要将sqlite3模块导入到Python程序中:

```python

import sqlite3

```

我们可以使用sqlite3模块中的connect()方法连接到SQLite3数据库,并使用cursor()方法创建一个游标对象来执行SQL语句:

```python

conn = sqlite3.connect('example.db')

cursor = conn.cursor()

```

接下来,我们可以使用execute()方法来执行SQL语句。例如,下面的代码创建了一个名为stocks的表:

```python

cursor.execute('''CREATE TABLE stocks

(date text, trans text, symbol text, qty real, price real)''')

```

如果要将数据插入到该表中,则可以使用如下代码:

```python

cursor.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

```

最后,不要忘记提交您的更改,以使它们持久化到数据库中:

```python

conn.commit()

```

完整代码示例:

```python

import sqlite3

conn = sqlite3.connect('example.db')

cursor = conn.cursor()

cursor.execute('''CREATE TABLE stocks

(date text, trans text, symbol text, qty real, price real)''')

cursor.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

conn.commit()

conn.close()

```

2. MySQLdb

MySQL是另一种常用的开源关系型数据库。它广泛应用于各种企业应用程序中。在Python中,我们可以安装MySQLdb模块并使用它来访问MySQL数据库。在使用MySQLdb前,我们需要先安装它:

```python

!pip install mysqlclient

```

安装完成后,我们可以使用如下代码连接到MySQL数据库:

```python

import MySQLdb

db = MySQLdb.connect(host="localhost",

user="root",

passwd="password",

db="testdb")

cursor = db.cursor()

```

这段代码使用 MySQLdb 模块连接到了 MySQL 数据库。你需要将 hostname、用户名、密码和数据库名称更改为与你连接的数据库相对应。

我们可以使用 execute() 方法来执行SQL查询。例如,下面的代码创建了一个名为"Employees"的表:

```python

cursor.execute("""CREATE TABLE Employees

(EmployeeID int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Age int,

PRIMARY KEY(EmployeeID))""")

```

如果要将数据插入到该表中,可以使用如下代码:

```python

cursor.execute("""INSERT INTO Employees (EmployeeID, LastName, FirstName, Age)

VALUES(1, 'Doe', 'John', 21),

(2, 'Moe', 'Jeff', 31),

(3, 'Smith', 'Jane', 45),

(4, 'Johnson', 'Bob', 38)""")

```

最后,不要忘记提交您的更改,以使它们持久化到数据库中:

```python

db.commit()

```

完整代码示例:

```python

import MySQLdb

db = MySQLdb.connect(host="localhost",

user="root",

passwd="password",

db="testdb")

cursor = db.cursor()

cursor.execute("""CREATE TABLE Employees

(EmployeeID int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Age int,

PRIMARY KEY(EmployeeID))""")

cursor.execute("""INSERT INTO Employees (EmployeeID, LastName, FirstName, Age)

VALUES(1, 'Doe', 'John', 21),

(2, 'Moe', 'Jeff', 31),

(3, 'Smith', 'Jane', 45),

(4, 'Johnson', 'Bob', 38)""")

db.commit()

db.close()

```

3. SQLAlchemy

SQLAlchemy是一个非常流行的Python ORM工具。它支持多种数据库管理系统,包括SQLite3、MySQL和PostgreSQL。它提供了强大的SQL语言和ORM接口,可以减少编写SQL代码的工作量,提高程序的可读性和可维护性。

使用SQLAlchemy需要先安装它:

```python

!pip install sqlalchemy

```

连接到一个SQLite3数据库的示例代码:

```python

from sqlalchemy import create_engine

engine = create_engine('sqlite:///example.db', echo=True)

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

```

在这里,我们使用 create_engine() 方法创建了一个引擎,它负责连接和管理与数据库的通信。 echo=True 参数的作用是打印出即将执行的所有 SQL 语句。

我们还定义了一个 declarative_base() 对象,它是 ORM 的核心组件,可以定义数据库表的模型,并将 Python 类映射到数据库表。在您的程序中定义模型,如下所示:

```python

from sqlalchemy import Column, Integer, String

class Employee(Base):

__tablename__ = 'employees'

id = Column(Integer, primary_key=True)

name = Column(String)

age = Column(Integer)

salary = Column(Integer)

def __repr__(self):

return "" % (self.name, self.age, self.salary)

```

这个模型定义了一个名为"employees"的表,具有 id、name、age 和 salary 列。我们还提供了一个__repr__方法来打印 Employee 对象。

最后,我们可以实例化一个引擎和一个模型,然后使用 session 进行交互:

```python

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)

session = Session()

new_employee = Employee(name='John Doe', age=25, salary=50000)

session.add(new_employee)

session.commit()

for instance in session.query(Employee).order_by(Employee.id):

print(instance)

```

在这个示例中,我们首先创建了一个 Session 实例,然后创建并添加了一个新的 Employee 对象。我们使用查询语句来检索 Employee 对象列表,并在控制台上打印它们。

综上,我们介绍了三种与数据库交互的方法:SQLite3、MySQLdb和SQLAlchemy。它们各自有一些优点和缺点,您应该根据您的特定要求选择适合您的工具。无论您选择哪种方法,都需要了解基本的SQL语法以及如何连接和操作数据库。同时,您还需要注意数据库安全性和数据一致性等问题。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(60) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部