Python连接数据库进行数据查询的操作代码

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: mysql数据库(mariadb)连接数据库首先,你需要使用MySQLdb.connect()函数建立与MySQL数据库的连接。你需要提供数据库服务器的地址(host),用户名(user),密码(passwd),以及你想要操作的数据库名称(db)。创建Cursor对象一旦建立了数据库连接,你可以使用连接对象的cursor()方法来创建一个cursor对象。这个方法返回一个cursor实例,你可以使用这个实例来执行SQL查询和命令。

mysql数据库(mariadb)

连接数据库

首先,你需要使用MySQLdb.connect()函数建立与MySQL数据库的连接。你需要提供数据库服务器的地址(host),用户名(user),密码(passwd),以及你想要操作的数据库名称(db)。

创建Cursor对象

一旦建立了数据库连接,你可以使用连接对象的cursor()方法来创建一个cursor对象。这个方法返回一个cursor实例,你可以使用这个实例来执行SQL查询和命令。

模块安装

python3 安装pip3 install mysqlclient

代码

# 引入模块
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="your_username", passwd="your_password", db="your_database")
# 创建cursor对象
cursor = db.cursor()
使用Cursor执行SQL语句:创建了cursor对象之后,你可以使用它的execute()方法来执行SQL语句。例如,你可以执行SELECT查询来从数据库中检索数据,或者执行INSERT、UPDATE、DELETE等语句来修改数据。
# 执行SQL查询
cursor.execute("SELECT * FROM your_table")
获取查询结果:如果执行的是查询(如SELECT语句),你可以使用cursor对象的fetchone()、fetchmany()或fetchall()方法来获取结果。
# 获取所有查询结果
results = cursor.fetchall()
for row in results:
    print(row)
关闭Cursor和连接:完成数据库操作后,你应该关闭cursor对象并关闭数据库连接,以释放资源。
# 关闭cursor
cursor.close()
# 关闭数据库连接
db.close()

image.gif

cursor对象的fetchone()、fetchmany(size)和fetchall()方法是用于从游标中检索由execute()方法执行的查询结果的三种不同方法。它们的主要区别在于它们检索结果的方式和数量:


fetchone():


这个方法每次检索结果集的下一行。它返回一个包含下一行数据的元组,如果没有更多的行,则返回None。


使用fetchone()通常在逐行处理结果集时非常有用。

cursor.execute("SELECT * FROM your_table")
while True:
    row = cursor.fetchone()
    if row is None:
        break
    print(row)

image.gif

fetchmany(size):

这个方法检索结果集中的下size行。size参数指定要检索的行数。如果结果集中剩余的行数少于size,则返回剩余的行。如果size参数被省略或设置为负数,fetchmany()将尝试检索剩余的所有行。

使用fetchmany()可以在一次调用中获取多行数据。

cursor.execute("SELECT * FROM your_table")
result = cursor.fetchmany(3)  # 获取3行数据
for row in result:
    print(row)

image.gif

fetchall():


这个方法检索结果集中的所有(剩余的)行。它返回一个列表,列表中的每个元素都是一行数据的元组。


使用fetchall()可以一次性获取查询结果的所有行,这对于处理不是非常大的数据集非常有用。

cursor.execute("SELECT * FROM your_table")
results = cursor.fetchall()
for row in results:
    print(row)

image.gif

选择哪种方法取决于你的具体需求,比如你希望如何从数据库中检索数据,以及你的应用程序如何处理这些数据。如果你需要逐行处理数据,fetchone()可能是一个好选择。如果你知道需要检索的数据量不是很大,或者你想一次性获取所有数据进行处理,fetchall()可能更合适。而fetchmany()提供了一种折衷的方法,允许你分批次地获取数据,这在处理大量数据时可以减少内存的使用。

Oracle数据库

连接数据库

使用Python连接到Oracle数据库,你可以使用cx_Oracle这个第三方库,它是专门用于Oracle数据库的Python扩展。以下是连接到Oracle数据库的步骤:

模块安装

安装cx_Oracle。可以使用pip来安装:pip install cx_Oracle

代码

import cx_Oracle
# 连接到Oracle数据库
# 方法1: 使用连接字符串
dsn = cx_Oracle.makedsn('hostname', port, service_name='service_name')
connection = cx_Oracle.connect('username', 'password', dsn)
# 方法2: 分别提供连接参数
# connection = cx_Oracle.connect('username', 'password', 'hostname', port, service_name='service_name')
# 使用cursor执行SQL语句
cursor = connection.cursor()
cursor.execute("SELECT * FROM your_table")
# 获取查询结果
results = cursor.fetchall()
for row in results:
    print(row)
# 关闭cursor和连接
cursor.close()
connection.close()

SQL server数据库

连接数据库

使用Python连接到SQL Server数据库,你可以使用pyodbc库,这是一个流行的Python ODBC接口。以下是连接到SQL Server数据库的步骤:

模块安装

使用pip安装pyodbc库:pip install pyodbc

代码

import pyodbc
# 连接到SQL Server数据库
conn_str = (
    r'DRIVER={ODBC Driver 17 for SQL Server};'
    r'SERVER=your_server_name;'
    r'DATABASE=your_database_name;'
    r'UID=your_username;'
    r'PWD=your_password'
)
conn = pyodbc.connect(conn_str)
# 创建cursor对象
cursor = conn.cursor()
# 执行SQL语句
cursor.execute("SELECT * FROM your_table")
# 获取查询结果
results = cursor.fetchall()
for row in results:
    print(row)
# 关闭cursor和连接
cursor.close()
conn.close()

image.gif

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
5月前
|
测试技术 Python
Python装饰器:为你的代码施展“魔法”
Python装饰器:为你的代码施展“魔法”
335 100
|
5月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
505 95
|
6月前
|
Python
Python的简洁之道:5个让代码更优雅的技巧
Python的简洁之道:5个让代码更优雅的技巧
334 104
|
6月前
|
开发者 Python
Python神技:用列表推导式让你的代码更优雅
Python神技:用列表推导式让你的代码更优雅
594 99
|
5月前
|
缓存 Python
Python装饰器:为你的代码施展“魔法
Python装饰器:为你的代码施展“魔法
285 88
|
5月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1025 68
|
6月前
|
设计模式 人工智能 API
AI智能体开发实战:17种核心架构模式详解与Python代码实现
本文系统解析17种智能体架构设计模式,涵盖多智能体协作、思维树、反思优化与工具调用等核心范式,结合LangChain与LangGraph实现代码工作流,并通过真实案例验证效果,助力构建高效AI系统。
790 7
|
存储 NoSQL Redis
Python—操作redis的一些心得
Python—操作redis的一些心得
158 0
|
存储 NoSQL 数据库
|
存储 NoSQL Redis

推荐镜像

更多