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

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

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

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

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

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

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

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

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

25人以下免费

目录

python3如何访问数据库

python3如何访问数据库

Python3访问数据库的方法包括使用数据库连接库、使用ORM框架、配置数据库连接等。 其中,使用数据库连接库是最常见和基础的方法。下面将详细介绍如何使用Python3访问数据库,重点介绍使用数据库连接库的方法。

一、使用数据库连接库

使用数据库连接库是最直接的方法,可以直接执行SQL语句进行数据库操作。Python提供了多种数据库连接库,包括sqlite3pymysqlpsycopg2等,分别用于连接SQLite、MySQL、PostgreSQL等数据库。

1.1 sqlite3

SQLite是一个轻量级的嵌入式数据库,适合用于开发和小型项目。Python自带sqlite3库,可以直接使用。

import sqlite3

连接到SQLite数据库

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

创建一个游标对象

cursor = conn.cursor()

执行SQL语句

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

插入数据

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

提交事务

conn.commit()

查询数据

cursor.execute("SELECT * FROM users")

rows = cursor.fetchall()

for row in rows:

print(row)

关闭游标和连接

cursor.close()

conn.close()

在上述代码中,我们首先连接到SQLite数据库,然后创建一个游标对象,并执行了一些SQL语句来创建表、插入数据和查询数据。最后,提交事务并关闭连接。

1.2 pymysql

pymysql是一个用于连接MySQL数据库的库,可以通过pip安装:

pip install pymysql

下面是一个使用pymysql连接MySQL数据库的示例:

import pymysql

连接到MySQL数据库

conn = pymysql.connect(host='localhost', user='root', password='password', database='test_db')

创建一个游标对象

cursor = conn.cursor()

执行SQL语句

cursor.execute('''CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), age INT)''')

插入数据

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

提交事务

conn.commit()

查询数据

cursor.execute("SELECT * FROM users")

rows = cursor.fetchall()

for row in rows:

print(row)

关闭游标和连接

cursor.close()

conn.close()

在上述代码中,我们连接到MySQL数据库,创建一个游标对象,并执行了一些SQL语句来创建表、插入数据和查询数据。最后,提交事务并关闭连接。

1.3 psycopg2

psycopg2是一个用于连接PostgreSQL数据库的库,可以通过pip安装:

pip install psycopg2

下面是一个使用psycopg2连接PostgreSQL数据库的示例:

import psycopg2

连接到PostgreSQL数据库

conn = psycopg2.connect(host='localhost', user='postgres', password='password', database='test_db')

创建一个游标对象

cursor = conn.cursor()

执行SQL语句

cursor.execute('''CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, name VARCHAR(255), age INT)''')

插入数据

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

提交事务

conn.commit()

查询数据

cursor.execute("SELECT * FROM users")

rows = cursor.fetchall()

for row in rows:

print(row)

关闭游标和连接

cursor.close()

conn.close()

在上述代码中,我们连接到PostgreSQL数据库,创建一个游标对象,并执行了一些SQL语句来创建表、插入数据和查询数据。最后,提交事务并关闭连接。

二、使用ORM框架

除了直接使用数据库连接库,还可以使用ORM(对象关系映射)框架来简化数据库操作。ORM框架可以将数据库中的表映射为Python对象,使得我们可以像操作对象一样操作数据库。常见的ORM框架有SQLAlchemy、Django ORM等。

2.1 SQLAlchemy

SQLAlchemy是一个功能强大的ORM框架,支持多种数据库。可以通过pip安装:

pip install sqlalchemy

下面是一个使用SQLAlchemy连接SQLite数据库的示例:

from sqlalchemy import create_engine, Column, Integer, String

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker

创建数据库引擎

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

创建基类

Base = declarative_base()

定义User类

class User(Base):

__tablename__ = 'users'

id = Column(Integer, primary_key=True, autoincrement=True)

name = Column(String)

age = Column(Integer)

创建表

Base.metadata.create_all(engine)

创建会话

Session = sessionmaker(bind=engine)

session = Session()

插入数据

user1 = User(name='Alice', age=30)

user2 = User(name='Bob', age=25)

session.add(user1)

session.add(user2)

提交事务

session.commit()

查询数据

users = session.query(User).all()

for user in users:

print(user.id, user.name, user.age)

关闭会话

session.close()

在上述代码中,我们首先创建了一个数据库引擎,并定义了一个User类来表示数据库中的users表。然后,我们创建了表,并使用会话插入和查询数据。最后,提交事务并关闭会话。

2.2 Django ORM

Django是一个流行的Web框架,自带一个强大的ORM。使用Django ORM需要创建一个Django项目。下面是一个简单的示例:

pip install django

django-admin startproject myproject

cd myproject

python manage.py startapp myapp

myapp/models.py中定义模型:

from django.db import models

class User(models.Model):

name = models.CharField(max_length=255)

age = models.IntegerField()

myproject/settings.py中配置数据库:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': BASE_DIR / "db.sqlite3",

}

}

创建数据库表:

python manage.py makemigrations

python manage.py migrate

myapp/views.py中操作数据:

from django.shortcuts import render

from .models import User

def index(request):

# 插入数据

User.objects.create(name='Alice', age=30)

User.objects.create(name='Bob', age=25)

# 查询数据

users = User.objects.all()

for user in users:

print(user.id, user.name, user.age)

return render(request, 'index.html')

在上述代码中,我们定义了一个User模型,并在视图中插入和查询数据。最后,将视图渲染到模板中。

三、配置数据库连接

无论是使用数据库连接库还是ORM框架,都需要配置数据库连接。以下是一些常见的数据库连接配置示例:

3.1 SQLite

SQLite是一种无服务器、零配置的数据库,只需要指定数据库文件路径即可:

import sqlite3

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

3.2 MySQL

连接MySQL数据库需要提供主机名、用户名、密码和数据库名:

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', database='test_db')

3.3 PostgreSQL

连接PostgreSQL数据库需要提供主机名、用户名、密码和数据库名:

import psycopg2

conn = psycopg2.connect(host='localhost', user='postgres', password='password', database='test_db')

3.4 SQLAlchemy

使用SQLAlchemy连接数据库需要指定数据库URL:

from sqlalchemy import create_engine

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

3.5 Django

在Django中,数据库连接配置在settings.py文件中:

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': BASE_DIR / "db.sqlite3",

}

}

四、事务处理

在数据库操作中,事务处理是一个重要的概念。事务确保了一组数据库操作要么全部成功,要么全部失败。使用数据库连接库时,可以通过显式提交和回滚事务来进行事务处理。

4.1 SQLite

在SQLite中,通过commit提交事务,通过rollback回滚事务:

import sqlite3

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

cursor = conn.cursor()

try:

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

conn.commit()

except:

conn.rollback()

finally:

cursor.close()

conn.close()

4.2 MySQL

在MySQL中,通过commit提交事务,通过rollback回滚事务:

import pymysql

conn = pymysql.connect(host='localhost', user='root', password='password', database='test_db')

cursor = conn.cursor()

try:

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

conn.commit()

except:

conn.rollback()

finally:

cursor.close()

conn.close()

4.3 PostgreSQL

在PostgreSQL中,通过commit提交事务,通过rollback回滚事务:

import psycopg2

conn = psycopg2.connect(host='localhost', user='postgres', password='password', database='test_db')

cursor = conn.cursor()

try:

cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")

cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")

conn.commit()

except:

conn.rollback()

finally:

cursor.close()

conn.close()

4.4 SQLAlchemy

在SQLAlchemy中,通过commit提交事务,通过rollback回滚事务:

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

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

Session = sessionmaker(bind=engine)

session = Session()

try:

user1 = User(name='Alice', age=30)

user2 = User(name='Bob', age=25)

session.add(user1)

session.add(user2)

session.commit()

except:

session.rollback()

finally:

session.close()

4.5 Django

在Django中,通过commit提交事务,通过rollback回滚事务:

from django.db import transaction

from .models import User

@transaction.atomic

def insert_users():

User.objects.create(name='Alice', age=30)

User.objects.create(name='Bob', age=25)

五、总结

通过本文的介绍,我们了解了使用Python3访问数据库的几种方法,包括使用数据库连接库、使用ORM框架、配置数据库连接和事务处理。使用数据库连接库是最直接的方法,可以直接执行SQL语句进行数据库操作,而使用ORM框架可以简化数据库操作,将数据库表映射为Python对象。无论是使用哪种方法,数据库连接配置和事务处理都是必不可少的步骤。希望本文能够帮助你更好地理解和掌握Python3访问数据库的方法。

相关问答FAQs:

如何选择合适的数据库与Python3结合使用?
在选择数据库时,需要考虑多种因素,包括数据的规模、访问速度、并发用户数量以及具体的应用场景。常见的数据库包括MySQL、PostgreSQL、SQLite和MongoDB等。MySQL和PostgreSQL适合大型应用,具备强大的功能和扩展性;SQLite则适合小型应用和嵌入式系统,因为它轻量且易于使用;MongoDB是一个非关系型数据库,适合处理大规模的非结构化数据。

在Python3中连接数据库需要哪些库?
Python3支持多种数据库连接库。对于关系型数据库,常用的库有mysql-connector-python(用于MySQL)、psycopg2(用于PostgreSQL)和sqlite3(内置于Python)。对于MongoDB,可以使用pymongo库。根据所选数据库,安装相应的库后,就可以通过简单的代码来建立连接。

如何确保Python3与数据库之间的数据安全性?
在进行数据库操作时,确保数据安全性是至关重要的。使用参数化查询可以有效防止SQL注入攻击。此外,确保数据库的用户权限设置合理,仅授予必要的权限给应用程序用户。对于敏感数据,应考虑使用加密存储和传输,确保数据在网络中的安全性。

相关文章