当前位置: 首页 > article >正文

【Python】除了Pandas,还有哪些方法可以连接Mysql数据库?(整理全)

前段时间因为用不了pandas包,但是数据库还是需要连接,于是我整理了一些,不需要pandas还能连接数据库处理的方法。

使用过后,好用是挺好用的,但是还得是pandas包方便些!

(按本人觉得好用的方法,排在前面,前面的优先)

1. 使用pymysql连接MySQL数据库

pymysql是一个纯Python实现的MySQL客户端库,可以用于与MySQL服务器交互。

import pymysql
conn = pymysql.connect(host='hostname', user='username', password='password', db='database',port=0000) 
cursor = conn.cursor()
cursor.execute("SELECT * FROM table_name")
results = cursor.fetchall()
for row in results:
    print(row)
cursor.close()
conn.close()

以下是转换成json格式或者list格式(我的数据最后处理成list了),方便后期做数据处理的:

import pymysql
conn = pymysql.connect(host='hostname', user='username', password='password', db='database',port=0000)
cursor = conn.cursor()
cursor.execute("SELECT * FROM table_name limit 10")
results = cursor.fetchall(
# 获取查询结果
rows = cursor.fetchall()

# 将查询结果转换为字典列表
rows_list = []
for row in rows:
    rows_list.append(dict(zip([col[0] for col in cursor.description], row)))

# 转换为Json/list
json_result = json.loads(json.dumps(rows_list, indent=4,ensure_ascii=False))

# 打印JSON结果
print(json_result)

# 关闭游标和连接
cursor.close()
conn.close()

在这里插入图片描述

2. 使用psycopg2连接PostgreSQL数据库

import psycopg2
conn = psycopg2.connect("dbname='database_name' user='username' host='hostname' password='password'")
cur = conn.cursor()
cur.execute("SELECT * FROM table_name")

cur.close()
conn.close()

数据处理方法同上,具体的写法:

import psycopg2
import json

# 连接到数据库
conn = psycopg2.connect(
    dbname="database_name",
    user="username",
    password="password",
    host="hostname",
    port="port"
)
cursor = conn.cursor()

# 执行查询
cursor.execute("SELECT * FROM table_name")

# 获取查询结果
rows = cursor.fetchall()

# 将查询结果转换为字典列表
rows_list = []
for row in rows:
    rows_list.append(dict(zip([col.name for col in cursor.description], row)))

# 转换为JSON
json_result = json.dumps(rows_list, indent=4)

# 打印JSON结果
print(json_result)

# 关闭游标和连接
cursor.close()
conn.close()

在这里插入图片描述

3. 使用sqlite3连接SQLite数据库

sqlite3是Python标准库的一部分,提供了一个轻量级的磁盘基础数据库,不需要独立的服务器进程。

import sqlite3
conn = sqlite3.connect('database.db')
cursor = conn.cursor()
cursor.execute("SELECT * FROM table_name")
results = cursor.fetchall()
for row in results:
    print(row)
cursor.close()
conn.close()

在这里插入图片描述

4. 使用pyodbc连接多种类型的数据库

pyodbc是一个Python模块,它提供了一个轻量级的接口到ODBC,可以用于连接多种类型的数据库。

import pyodbc
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=hostname;DATABASE=database_name;UID=username;PWD=password')
cursor = conn.cursor()
cursor.execute("SELECT * FROM table_name")
results = cursor.fetchall()
for row in results:
    print(row)
cursor.close()
conn.close()

在这里插入图片描述

5.使用sqlalchemy作为ORM工具

SQLAlchemy是一个SQL工具包和对象关系映射(ORM)系统,可以用于数据库操作。

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://username:password@hostname:port/database_name')
with engine.connect() as connection:
    result = connection.execute("SELECT * FROM table_name")
    for row in result:
        print(row)

我尝试了这种方法,但是我不喜欢前面的with ……的部分,要全部一起运行才可以,这样对代码连续测试来说,真的太不友好了。

最后呈现的格式,有点像元组的格式,个人比较喜欢上面的写法。
在这里插入图片描述

6. 使用cx_Oracle连接Oracle数据库

cx_Oracle是Oracle官方提供的Python扩展,用于访问Oracle数据库。

import cx_Oracle
conn = cx_Oracle.connect('username/password@hostname:port/service_name')
cursor = conn.cursor()
cursor.execute("SELECT * FROM table_name")
results = cursor.fetchall()
for row in results:
    print(row)
cursor.close()
conn.close()

缺点:不能直接运行,需要安装 cx_Oracle的包
在这里插入图片描述

选择哪种方法取决于您要连接的数据库类型以及您的项目需求。每种方法都有其特定的安装和配置步骤,您需要根据您的数据库服务器和Python环境进行相应的设置。


http://www.kler.cn/a/407902.html

相关文章:

  • 拥塞控制算法的 Utility-Function
  • 若依-一个请求中返回多个表的信息
  • leetcode top100中的30道简单和中等难度的题
  • 后端开发详细学习框架与路线
  • 小蒋聊技术:大数据驱动决策——技术落地与业务深度融合
  • 字符串的常用函数
  • CentOS中使用Python将文本中的IP地址替换为外网地址
  • 挑战 Cursor,Codeium 推出下一代 AI IDE Windsurf
  • 跟着问题学3——卷积神经网络详解
  • 【论文速读】| 迈向自动化渗透测试:引入大语言模型基准、分析与改进
  • archlinux安装waydroid
  • Rust 力扣 - 2266. 统计打字方案数
  • 开发中使用UML的流程_03 CIM-2:分析业务流程
  • 渗透测试笔记——shodan(4)
  • 深入解析UML组件图:概念、构成与实际应用
  • 5G CPE与4G CPE的主要区别有哪些
  • 畅听FM 3.0.0 | 很有果味的电台软件,超多FM电台,支持播放本地音乐
  • 浅谈 proxy
  • C++中的初始化列表
  • 如何设计和实现通用唯一 Code 生成方法
  • 从数据提取到管理:TextIn平台的全面解析与产品体验
  • Elasticsearch客户端在和集群连接时,如何选择特定的节点执行请求的?
  • 网络安全 - DOS
  • 解决k8s拉取私有镜像401 Unauthorized 问题
  • 二分排序
  • vue基于高德地图实现城市管网压力点、管线、测距、测面积、绘制多边形、绘制圆代码