【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环境进行相应的设置。