通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

python3如何访问数据库

python3如何访问数据库

Python3 访问数据库的方法有很多种,常用的包括使用SQLite、使用MySQL、使用PostgreSQL、使用SQLAlchemy。 在这些方法中,SQLite 是一个内置于 Python 标准库中的轻量级数据库,特别适合小型应用。接下来,将详细介绍如何使用 SQLite 访问数据库。

一、使用 SQLite 访问数据库

SQLite 是一个进程内库,实现了自给自足、无服务器、零配置、事务性 SQL 数据库引擎。Python 的标准库中自带了对 SQLite 的支持,可以直接使用。

1.1、连接到 SQLite 数据库

要连接到 SQLite 数据库,首先需要导入 sqlite3 模块,然后使用 sqlite3.connect() 方法连接到数据库。如果数据库文件不存在,sqlite3 将自动创建一个新的数据库文件。

import sqlite3

连接到 SQLite 数据库

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

print("Opened database successfully")

1.2、创建表

连接到数据库后,可以使用 SQL 语句创建表。可以使用 conn.execute() 方法执行 SQL 语句。

conn.execute('''

CREATE TABLE COMPANY

(ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL,

ADDRESS CHAR(50),

SALARY REAL);

''')

print("Table created successfully")

1.3、插入数据

使用 conn.execute() 方法插入数据到表中。为了确保数据写入到数据库中,必须调用 conn.commit() 方法。

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (1, 'Paul', 32, 'California', 20000.00 )");

conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \

VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

conn.commit()

print("Records created successfully")

1.4、查询数据

查询数据库中的数据可以使用 SELECT 语句,并使用 conn.execute() 方法执行查询。查询结果可以通过 cursor.fetchall() 方法获取。

cursor = conn.execute("SELECT id, name, address, salary from COMPANY")

for row in cursor:

print("ID = ", row[0])

print("NAME = ", row[1])

print("ADDRESS = ", row[2])

print("SALARY = ", row[3], "\n")

1.5、更新和删除数据

可以使用 UPDATEDELETE 语句更新和删除数据。

# 更新数据

conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")

conn.commit()

print("Total number of rows updated :", conn.total_changes)

删除数据

conn.execute("DELETE from COMPANY where ID = 2;")

conn.commit()

print("Total number of rows deleted :", conn.total_changes)

1.6、关闭数据库连接

操作完成后,记得关闭数据库连接。

conn.close()

二、使用 MySQL 访问数据库

MySQL 是一种流行的开源关系数据库管理系统。要在 Python 中使用 MySQL,可以使用 mysql-connector-python 或者 PyMySQL 模块。以下是使用 mysql-connector-python 连接 MySQL 数据库的示例。

2.1、安装 MySQL 连接器

首先,需要安装 MySQL 连接器。

pip install mysql-connector-python

2.2、连接到 MySQL 数据库

import mysql.connector

conn = mysql.connector.connect(

host="localhost",

user="yourusername",

password="yourpassword",

database="yourdatabase"

)

print("Connected to MySQL database")

2.3、创建表

cursor = conn.cursor()

cursor.execute('''

CREATE TABLE COMPANY (

ID INT PRIMARY KEY,

NAME VARCHAR(255) NOT NULL,

AGE INT NOT NULL,

ADDRESS VARCHAR(255),

SALARY FLOAT

)

''')

print("Table created successfully")

2.4、插入数据

cursor.execute("INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00)")

cursor.execute("INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00)")

conn.commit()

print("Records created successfully")

2.5、查询数据

cursor.execute("SELECT ID, NAME, ADDRESS, SALARY FROM COMPANY")

for row in cursor.fetchall():

print("ID =", row[0])

print("NAME =", row[1])

print("ADDRESS =", row[2])

print("SALARY =", row[3])

2.6、更新和删除数据

# 更新数据

cursor.execute("UPDATE COMPANY SET SALARY = 25000.00 WHERE ID = 1")

conn.commit()

print("Total number of rows updated:", cursor.rowcount)

删除数据

cursor.execute("DELETE FROM COMPANY WHERE ID = 2")

conn.commit()

print("Total number of rows deleted:", cursor.rowcount)

2.7、关闭数据库连接

conn.close()

三、使用 PostgreSQL 访问数据库

PostgreSQL 是一个强大的开源对象-关系数据库系统。要在 Python 中使用 PostgreSQL,可以使用 psycopg2 模块。

3.1、安装 psycopg2

pip install psycopg2

3.2、连接到 PostgreSQL 数据库

import psycopg2

conn = psycopg2.connect(

host="localhost",

database="yourdatabase",

user="yourusername",

password="yourpassword"

)

print("Connected to PostgreSQL database")

3.3、创建表

cursor = conn.cursor()

cursor.execute('''

CREATE TABLE COMPANY (

ID SERIAL PRIMARY KEY,

NAME VARCHAR(255) NOT NULL,

AGE INT NOT NULL,

ADDRESS VARCHAR(255),

SALARY REAL

)

''')

print("Table created successfully")

3.4、插入数据

cursor.execute("INSERT INTO COMPANY (NAME, AGE, ADDRESS, SALARY) VALUES ('Paul', 32, 'California', 20000.00)")

cursor.execute("INSERT INTO COMPANY (NAME, AGE, ADDRESS, SALARY) VALUES ('Allen', 25, 'Texas', 15000.00)")

conn.commit()

print("Records created successfully")

3.5、查询数据

cursor.execute("SELECT ID, NAME, ADDRESS, SALARY FROM COMPANY")

for row in cursor.fetchall():

print("ID =", row[0])

print("NAME =", row[1])

print("ADDRESS =", row[2])

print("SALARY =", row[3])

3.6、更新和删除数据

# 更新数据

cursor.execute("UPDATE COMPANY SET SALARY = 25000.00 WHERE ID = 1")

conn.commit()

print("Total number of rows updated:", cursor.rowcount)

删除数据

cursor.execute("DELETE FROM COMPANY WHERE ID = 2")

conn.commit()

print("Total number of rows deleted:", cursor.rowcount)

3.7、关闭数据库连接

conn.close()

四、使用 SQLAlchemy 访问数据库

SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,为 Python 提供了完整的企业级持久模型模式。

4.1、安装 SQLAlchemy

pip install sqlalchemy

4.2、连接到数据库

from sqlalchemy import create_engine

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

print("Connected to database")

4.3、定义模型

from sqlalchemy import Column, Integer, String, Float

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Company(Base):

__tablename__ = 'company'

id = Column(Integer, primary_key=True)

name = Column(String)

age = Column(Integer)

address = Column(String)

salary = Column(Float)

Base.metadata.create_all(engine)

print("Table created successfully")

4.4、插入数据

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)

session = Session()

new_company = Company(name='Paul', age=32, address='California', salary=20000.00)

session.add(new_company)

session.commit()

print("Record created successfully")

4.5、查询数据

companies = session.query(Company).all()

for company in companies:

print(company.id, company.name, company.address, company.salary)

4.6、更新和删除数据

# 更新数据

company = session.query(Company).filter_by(id=1).first()

company.salary = 25000.00

session.commit()

print("Total number of rows updated:", session.query(Company).count())

删除数据

company = session.query(Company).filter_by(id=2).first()

session.delete(company)

session.commit()

print("Total number of rows deleted:", session.query(Company).count())

4.7、关闭数据库连接

session.close()

总结

Python3 提供了多种访问数据库的方法,常用的包括 SQLite、MySQL、PostgreSQL 和 SQLAlchemy。每种方法都有其独特的优点和适用场景。根据实际需求选择合适的方法,可以更高效地进行数据库操作。在本文中,我们详细介绍了这些方法的使用步骤和示例代码,希望能对您有所帮助。

相关问答FAQs:

如何在Python3中连接到不同类型的数据库?
Python3提供了多种库来连接不同类型的数据库,比如MySQL、PostgreSQL和SQLite等。对于MySQL,可以使用mysql-connector-python库,而PostgreSQL可以使用psycopg2。SQLite则是Python内置支持的,使用sqlite3模块即可。连接时,需要提供数据库的地址、用户名和密码等信息,具体的连接方式可以根据所选库的文档进行查阅。

在Python3中执行SQL查询的最佳实践是什么?
在执行SQL查询时,使用参数化查询是一个最佳实践,这可以防止SQL注入攻击。在Python3中,使用游标(cursor)对象的execute()方法可以执行带参数的查询。此外,确保在使用完成后关闭游标和数据库连接,以释放资源并保持系统的稳定。

如何处理Python3与数据库交互中的错误和异常?
在与数据库进行交互时,可能会遇到各种错误和异常,例如连接失败或查询语法错误。可以使用try...except结构来捕获这些异常,并采取适当的措施,例如记录错误信息或重试连接。许多数据库库也提供了特定的异常类,可以根据需要进行更细致的错误处理。

相关文章