最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)據(jù)庫(kù)自動(dòng)化完整指南

 更新時(shí)間:2025年03月26日 08:38:23   作者:老胖閑聊  
本指南詳細(xì)講解如何使用Python操作MySQL、Oracle和Microsoft?SQL?Server數(shù)據(jù)庫(kù),涵蓋常用庫(kù)、基礎(chǔ)操作、高級(jí)功能及完整代碼示例,需要的朋友可以參考下

一、MySQL 操作詳解

1. 常用庫(kù)

  • mysql-connector-python(官方驅(qū)動(dòng))
    安裝:pip install mysql-connector-python
  • PyMySQL(純 Python 實(shí)現(xiàn))
    安裝:pip install pymysql

2. 基礎(chǔ)操作

連接數(shù)據(jù)庫(kù)

import mysql.connector

config = {
    'user': 'root',
    'password': '123456',
    'host': 'localhost',
    'database': 'test_db'
}
conn = mysql.connector.connect(**config)
cursor = conn.cursor()

執(zhí)行 SQL

# 創(chuàng)建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255)
)
""")

# 插入數(shù)據(jù)
cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", ('Alice', 'alice@example.com'))
conn.commit()

3. 高級(jí)功能

事務(wù)管理

try:
    cursor.execute("INSERT INTO users (name) VALUES ('Bob')")
    cursor.execute("UPDATE users SET email='error' WHERE id=999")  # 模擬錯(cuò)誤
    conn.commit()
except mysql.connector.Error as e:
    conn.rollback()

二、Oracle 操作詳解

1. 常用庫(kù)

2. 基礎(chǔ)操作

連接數(shù)據(jù)庫(kù)

import cx_Oracle

dsn = cx_Oracle.makedsn("localhost", 1521, service_name="ORCLCDB")
conn = cx_Oracle.connect(user="scott", password="tiger", dsn=dsn)
cursor = conn.cursor()

執(zhí)行 SQL

# 使用序列插入數(shù)據(jù)
cursor.execute("CREATE SEQUENCE user_seq START WITH 1 INCREMENT BY 1")
cursor.execute("""
INSERT INTO users (id, name) 
VALUES (user_seq.NEXTVAL, :name)""", name="Charlie")
conn.commit()

3. 高級(jí)功能

調(diào)用存儲(chǔ)過(guò)程

p_name = cursor.var(str)
cursor.callproc("get_user", [1, p_name])
print(p_name.getvalue())  # 輸出結(jié)果

三、Microsoft SQL Server 操作詳解

1. 常用庫(kù)

  • pyodbc(推薦)
    安裝:pip install pyodbc
    依賴(lài):需安裝 ODBC Driver
  • pymssql(輕量級(jí))
    安裝:pip install pymssql

2. 基礎(chǔ)操作

連接數(shù)據(jù)庫(kù)

import pyodbc

conn = pyodbc.connect(
    Driver='{ODBC Driver 17 for SQL Server}',
    Server='localhost',
    Database='test_db',
    UID='sa',
    PWD='password'
)
cursor = conn.cursor()

執(zhí)行 SQL

# 分頁(yè)查詢(xún)(OFFSET FETCH)
cursor.execute("""
SELECT * FROM users
ORDER BY id
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY
""")
print(cursor.fetchall())

3. 高級(jí)功能

批量插入

data = [('David', 'david@example.com'), ('Eva', 'eva@example.com')]
cursor.executemany("INSERT INTO users (name, email) VALUES (?, ?)", data)
conn.commit()

四、通用注意事項(xiàng)

1. 安全與性能

  • 參數(shù)化查詢(xún):始終使用占位符(%s、?、:name)避免 SQL 注入。
  • 連接管理:使用 with 上下文管理器或封裝類(lèi)確保連接關(guān)閉。
# 示例:MySQL 上下文管理器
with mysql.connector.connect(**config) as conn:
    with conn.cursor() as cursor:
        cursor.execute("SELECT 1")

2. 異常處理

try:
    conn = cx_Oracle.connect("invalid_connection")
except cx_Oracle.DatabaseError as e:
    error = e.args[0]
    print(f"Code: {error.code}, Message: {error.message}")
finally:
    if conn:
        conn.close()

3. 自動(dòng)化封裝類(lèi)

class DatabaseAutomator:
    """通用數(shù)據(jù)庫(kù)操作封裝"""
    def __init__(self, db_type, **config):
        self.db_type = db_type
        self.config = config
        self.conn = None

    def __enter__(self):
        if self.db_type == "mysql":
            self.conn = mysql.connector.connect(**self.config)
        elif self.db_type == "oracle":
            dsn = cx_Oracle.makedsn(**self.config)
            self.conn = cx_Oracle.connect(user=self.config['user'], password=self.config['password'], dsn=dsn)
        # 其他數(shù)據(jù)庫(kù)類(lèi)似
        return self.conn.cursor()

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.conn:
            if exc_type: self.conn.rollback()
            else: self.conn.commit()
            self.conn.close()

# 使用示例
with DatabaseAutomator("mysql", user="root", password="123456", host="localhost", database="test_db") as cursor:
    cursor.execute("SELECT * FROM users")

4. ORM 集成

  • SQLAlchemy 統(tǒng)一操作不同數(shù)據(jù)庫(kù):
from sqlalchemy import create_engine

# MySQL
engine = create_engine("mysql+pymysql://user:password@localhost/db")

# Oracle
engine = create_engine("oracle+cx_oracle://user:password@localhost:1521/ORCLCDB")

# SQL Server
engine = create_engine("mssql+pyodbc://user:password@localhost/db?driver=ODBC+Driver+17+for+SQL+Server")

with engine.connect() as conn:
    result = conn.execute("SELECT * FROM users")
    print(result.fetchall())

通過(guò)本文檔,可快速掌握 Python 操作三大主流數(shù)據(jù)庫(kù)的核心方法。根據(jù)場(chǎng)景選擇合適的庫(kù)和工具,結(jié)合 ORM 框架可進(jìn)一步提升開(kāi)發(fā)效率。

到此這篇關(guān)于Python數(shù)據(jù)庫(kù)自動(dòng)化完整指南的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)庫(kù)自動(dòng)化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 跟老齊學(xué)Python之正規(guī)地說(shuō)一句話(huà)

    跟老齊學(xué)Python之正規(guī)地說(shuō)一句話(huà)

    雖然在第一部分中,已經(jīng)零星涉及到語(yǔ)句問(wèn)題,并且在不同場(chǎng)合也進(jìn)行了一些應(yīng)用。畢竟不那么系統(tǒng)。本部分,就比較系統(tǒng)地介紹python中的語(yǔ)句。
    2014-09-09
  • 詳解使用Python+Pycaret進(jìn)行異常檢測(cè)

    詳解使用Python+Pycaret進(jìn)行異常檢測(cè)

    異常檢測(cè)提供了在數(shù)據(jù)中發(fā)現(xiàn)模式、偏差和異常的途徑,這些模式、偏差和異常不限于模型的標(biāo)準(zhǔn)行為。本文將用Python?Pycaret進(jìn)行異常檢測(cè),感興趣的可以了解一下
    2022-03-03
  • python調(diào)用百度語(yǔ)音識(shí)別api

    python調(diào)用百度語(yǔ)音識(shí)別api

    這篇文章主要介紹了python調(diào)用百度語(yǔ)音識(shí)別api,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解

    今天小編就為大家分享一篇對(duì)Python Class之間函數(shù)的調(diào)用關(guān)系詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)解讀

    pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)解讀

    這篇文章主要介紹了pytorch中的nn.Unfold()函數(shù)和fold()函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • OpenCV圖像形態(tài)學(xué)的實(shí)現(xiàn)

    OpenCV圖像形態(tài)學(xué)的實(shí)現(xiàn)

    本文主要介紹了OpenCV圖像形態(tài)學(xué)的實(shí)現(xiàn),包括腐蝕、膨脹、開(kāi)運(yùn)算、閉運(yùn)算、梯度運(yùn)算、頂帽運(yùn)算和黑帽運(yùn)算,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Python處理JSON的完全指南:從基礎(chǔ)到實(shí)戰(zhàn),掌握數(shù)據(jù)交換核心技能

    Python處理JSON的完全指南:從基礎(chǔ)到實(shí)戰(zhàn),掌握數(shù)據(jù)交換核心技能

    本文將從?JSON?與?Python?的類(lèi)型映射講起,帶你理解序列化與反序列化的底層邏輯,然后通過(guò)實(shí)戰(zhàn)案例演示如何解析?API?數(shù)據(jù)、處理自定義對(duì)象,最后總結(jié)出?3?個(gè)避坑技巧
    2026-06-06
  • Python求解平方根的方法

    Python求解平方根的方法

    這篇文章主要介紹了Python求解平方根的方法,涉及Python數(shù)學(xué)運(yùn)算的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Python數(shù)據(jù)類(lèi)型之Number數(shù)字操作實(shí)例詳解

    Python數(shù)據(jù)類(lèi)型之Number數(shù)字操作實(shí)例詳解

    這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型之Number數(shù)字操作,結(jié)合實(shí)例形式詳細(xì)分析了Python數(shù)字類(lèi)型的概念、功能、分類(lèi)及常用數(shù)學(xué)函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-05-05
  • TensorFlow tensor的拼接實(shí)例

    TensorFlow tensor的拼接實(shí)例

    今天小編就為大家分享一篇TensorFlow tensor的拼接實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01

最新評(píng)論

阳江市| 铜陵市| 阿克陶县| 思南县| 托里县| 梨树县| 昆山市| 呼图壁县| 安康市| 绵阳市| 淳安县| 海淀区| 博野县| 姚安县| 莱芜市| 北安市| 崇明县| 曲松县| 金溪县| 荥经县| 聂荣县| 陇川县| 象山县| 保康县| 宁海县| 金乡县| 灌云县| 贵港市| 新昌县| 华池县| 桃江县| 天镇县| 兴业县| 江安县| 大方县| 玛沁县| 岳西县| 永州市| 五河县| 蒙城县| 黄山市|