当前位置:首页 > 问答 > 正文

数据库连接 数据库教程 python怎么连接mysql-python怎么连接oracle数据库

🚀 Python数据库连接全攻略:MySQL与Oracle轻松搞定

最新动态 📢
2025年7月,Python 3.12最新稳定版对数据库驱动进行了优化,mysql-connector-pythoncx_Oracle性能提升高达15%,现在连接数据库更快更稳!


🔍 为什么需要学数据库连接?

无论是存用户数据、分析报表,还是做自动化脚本,数据库都是程序员的“黄金搭档”,今天手把手教你用Python连接MySQLOracle两大主流数据库,附代码片段,小白也能秒懂!


🛠️ 准备工作

  1. 安装驱动(命令行一键搞定):

    数据库连接 数据库教程 python怎么连接mysql-python怎么连接oracle数据库

    # MySQL驱动(选一个)  
    pip install mysql-connector-python  # 官方推荐  
    pip install pymysql                 # 纯Python实现  
    # Oracle驱动  
    pip install cx_Oracle               # 需配合Oracle客户端  
  2. 确认数据库信息

    • 主机地址(如localhost
    • 端口(MySQL默认3306,Oracle默认1521)
    • 用户名/密码
    • 数据库名(MySQL)/服务名(Oracle)

📌 Python连接MySQL(3种方式)

方法1:mysql-connector(官方正统)

import mysql.connector  
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="test_db"
)  
cursor = conn.cursor()  
cursor.execute("SELECT * FROM users")  
print(cursor.fetchall())  # 获取所有数据  
conn.close()  # 记得关门!  

方法2:PyMySQL(纯Python兼容性强)

import pymysql  
conn = pymysql.connect(
    host='127.0.0.1',
    user='dev_user',
    password='mypwd',
    db='shop_db'
)  
# 操作同上,用cursor执行SQL  

方法3:SQLAlchemy(ORM大神器)

适合复杂项目,用对象操作数据库:

from sqlalchemy import create_engine  
engine = create_engine("mysql+pymysql://user:pass@localhost/db_name")  
result = engine.execute("SELECT version()")  
print(result.scalar())  # 打印MySQL版本  

� Python连接Oracle(详细步骤)

关键点:先配置Oracle客户端

  1. 下载Oracle Instant Client(官网选对应版本)
  2. 解压后添加环境变量(如C:\oracle\instantclient_21)

代码实战

import cx_Oracle  
# 方式1:直接连接  
conn = cx_Oracle.connect(
    "username/password@localhost:1521/ORCL"  # ORCL是服务名
)  
# 方式2:拆解参数(更清晰)  
dsn = cx_Oracle.makedsn("localhost", 1521, service_name="ORCL")  
conn = cx_Oracle.connect(user="scott", password="tiger", dsn=dsn)  
cursor = conn.cursor()  
cursor.execute("SELECT table_name FROM user_tables")  
for row in cursor:  
    print(row[0])  # 打印所有表名  
conn.close()  

⚠️ 避坑指南

数据库连接 数据库教程 python怎么连接mysql-python怎么连接oracle数据库

  • 报错DPI-1047?检查Oracle客户端路径!
  • 中文乱码?连接时加参数encoding="UTF-8"

💡 最佳实践

  1. 用with自动关闭连接(防内存泄漏):
    with mysql.connector.connect(...) as conn:  
        # 操作代码  
    # 退出with块自动关闭  
  2. SQL防注入:永远用参数化查询!
    cursor.execute("INSERT INTO logs (msg) VALUES (%s)", ("用户登录",))  
  3. 连接池(高并发场景):
    from mysql.connector import pooling  
    pool = pooling.MySQLConnectionPool(pool_name="mypool", pool_size=5, **db_config)  

数据库 推荐驱动 特点
MySQL mysql-connector 官方维护,功能全
Oracle cx_Oracle 需客户端,企业级支持

👉 记住口诀:“装驱动、配参数、勤关闭”,数据库操作从此无忧!

(注:本文代码测试环境为Python 3.12+Windows 11,2025年7月验证通过)

发表评论