【100天精通python】Day31:使用python操作数据库_数据库编程接口,连接对象和游标对象,数据库连接配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 【100天精通python】Day31:使用python操作数据库_数据库编程接口,连接对象和游标对象,数据库连接配置

专栏导读

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html

       数据库编程接口是用于连接、操作和管理数据库的一组函数、类和方法。不同类型的数据库可能有不同的编程接口。以下是一些常见的数据库编程接口:

一、数据库编程接口

1. Python标准库接口

Python标准库中的sqlite3模块提供了与SQLite数据库的连接和操作接口。

import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()
# 执行SQL查询
cursor.execute("SELECT * FROM users")
# 处理查询结果
rows = cursor.fetchall()
# 关闭连接
conn.close()

2. MySQL Connector/Python接口

mysql.connector库提供了连接和操作MySQL数据库的接口。

import mysql.connector
# 连接到MySQL数据库
conn = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="mydb"
)
cursor = conn.cursor()
# 执行SQL查询
cursor.execute("SELECT * FROM users")
# 处理查询结果
rows = cursor.fetchall()
# 关闭连接
conn.close()

3. Psycopg2接口(用于连接PostgreSQL数据库)

psycopg2库提供了连接和操作PostgreSQL数据库的接口。

import psycopg2
# 连接到PostgreSQL数据库
conn = psycopg2.connect(
    host="localhost",
    user="username",
    password="password",
    database="mydb"
)
cursor = conn.cursor()
# 执行SQL查询
cursor.execute("SELECT * FROM users")
# 处理查询结果
rows = cursor.fetchall()
# 关闭连接
conn.close()

4. SQLAlchemy接口

 SQLAlchemy库是一个全功能的SQL工具包和对象关系映射(ORM)库,提供了更高级的数据库操作接口。

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
# 创建数据库引擎
engine = create_engine('sqlite:///mydatabase.db')
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
# 查询数据
users = session.query(User).all()
# 关闭会话
session.close()

以上是一些常见的数据库编程接口示例。根据所使用的数据库类型、项目需求和个人偏好,你可以选择合适的接口来进行数据库操作。每种接口都有其特定的优势和适用场景。

二、连接对象和游标对象

       在数据库编程中,连接对象和游标对象是两个重要的概念。它们用于执行数据库操作,但具有不同的角色和功能。

1. 连接对象(Connection Object)

       连接对象是用于建立与数据库之间的物理连接。它包含了连接数据库所需的所有信息,如主机名、用户名、密码、数据库名等。连接对象还管理着与数据库之间的通信通道,并支持事务管理。一个连接对象可以被多个游标对象所共享,但在多线程环境中需要小心处理,以避免竞争条件。

通常,连接对象的方法包括:

  • cursor(): 创建一个游标对象,用于执行SQL语句和处理查询结果。
  • commit(): 提交事务,将之前的操作永久保存到数据库。
  • rollback(): 回滚事务,撤销之前的操作。
  • close(): 关闭连接,释放资源。
  • 表1. 创建连接对象connect()函数常用的参数及说明
  • 表2. 连接对象的方法

2. 游标对象(Cursor Object)

       游标对象用于执行SQL语句并处理查询结果。每个游标对象都与一个连接对象相关联,通过连接对象创建。游标对象允许你在连接上执行多个SQL操作,并且可以逐行处理查询结果。

游标对象通常的方法包括:

  • execute(sql, params): 执行SQL语句,可以使用参数。
  • fetchone(): 获取查询结果中的下一行数据。
  • fetchall(): 获取所有查询结果的行数据。
  • fetchmany(size): 获取指定数量的查询结果行数据。
  • close(): 关闭游标,释放资源。
  • 表3 游标对象的方法

示例代码(使用sqlite3库):

import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('mydatabase.db')
# 创建游标对象
cursor = conn.cursor()
# 执行查询语句
cursor.execute("SELECT * FROM users")
# 获取查询结果
rows = cursor.fetchall()
# 遍历和处理结果
for row in rows:
    print(row)
# 关闭游标和连接
cursor.close()
conn.close()

        连接对象用于管理物理连接,游标对象用于执行和处理数据库操作。在进行数据库操作时,要确保适当地管理连接和游标,以避免资源泄露和其他问题。

三、数据库连接配置

       数据库连接配置是在应用程序中指定用于连接数据库的各种参数,包括主机、端口、用户名、密码、数据库名称、字符集等。这些参数在建立与数据库的连接时起着关键作用。以下是一个典型的数据库连接配置示例:

1 MySQL 数据库连接配置示例

对于连接到MySQL数据库,常见的连接配置包括:

  1. 主机和端口:数据库服务器的主机名或IP地址以及连接端口。
  2. 用户名和密码:用于进行身份验证的用户名和密码。
  3. 数据库名称:要连接的具体数据库的名称。
  4. 字符集:在连接过程中要使用的字符集,以确保正确的数据交换。
import mysql.connector
# 配置数据库连接参数
config = {
    "host": "localhost",   # 主机
    "port": 3306,          # 端口
    "user": "username",    # 用户名
    "password": "password",
    "database": "mydb",    # 数据库名称
    "charset": "utf8mb4"   # 字符集
}
# 建立数据库连接
conn = mysql.connector.connect(**config)

2 PostgreSQL 数据库连接配置示例

对于连接到PostgreSQL数据库,连接配置可能包括:

  1. 主机和端口:数据库服务器的主机名或IP地址以及连接端口。
  2. 用户名和密码:用于进行身份验证的用户名和密码。
  3. 数据库名称:要连接的具体数据库的名称。
import psycopg2
# 配置数据库连接参数
conn = psycopg2.connect(
    host="localhost",     # 主机
    port="5432",          # 端口
    user="username",      # 用户名
    password="password",
    database="mydb"       # 数据库名称
)

3 SQLite 数据库连接配置示例

       对于连接到SQLite数据库,连接配置通常只涉及文件路径,因为SQLite数据库是嵌入式的,存储在本地文件中。

import sqlite3
# 配置数据库连接参数(文件路径)
conn = sqlite3.connect('mydatabase.db')

       在实际应用中,根据所使用的数据库库和数据库服务器的配置,你需要适当地调整连接配置参数。连接配置的目的是为了在应用程序中建立与数据库的可靠连接,以便进行数据交换和操作。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
28天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
16天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80
|
5天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
27 14
|
15天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
51 2
|
24天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
174 15
|
28天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
46 10
|
28天前
|
人工智能 数据挖掘 开发者
探索Python编程之美:从基础到进阶
本文是一篇深入浅出的Python编程指南,旨在帮助初学者理解Python编程的核心概念,并引导他们逐步掌握更高级的技术。文章不仅涵盖了Python的基础语法,还深入探讨了面向对象编程、函数式编程等高级主题。通过丰富的代码示例和实践项目,读者将能够巩固所学知识,提升编程技能。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考和启示。让我们一起踏上Python编程的美妙旅程吧!
|
11天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
11天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
41 3
|
11天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
53 2