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

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

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

一、MySQL 操作詳解

1. 常用庫

  • mysql-connector-python(官方驅動)
    安裝:pip install mysql-connector-python
  • PyMySQL(純 Python 實現(xiàn))
    安裝:pip install pymysql

2. 基礎操作

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

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. 高級功能

事務管理

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

二、Oracle 操作詳解

1. 常用庫

2. 基礎操作

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

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. 高級功能

調(diào)用存儲過程

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

三、Microsoft SQL Server 操作詳解

1. 常用庫

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

2. 基礎操作

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

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

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

3. 高級功能

批量插入

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

四、通用注意事項

1. 安全與性能

  • 參數(shù)化查詢:始終使用占位符(%s、?、:name)避免 SQL 注入。
  • 連接管理:使用 with 上下文管理器或封裝類確保連接關閉。
# 示例: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. 自動化封裝類

class DatabaseAutomator:
    """通用數(shù)據(jù)庫操作封裝"""
    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ù)庫類似
        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ù)庫:
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())

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

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

相關文章

  • 跟老齊學Python之正規(guī)地說一句話

    跟老齊學Python之正規(guī)地說一句話

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

    詳解使用Python+Pycaret進行異常檢測

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

    python調(diào)用百度語音識別api

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

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

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

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

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

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

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

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

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

    Python求解平方根的方法

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

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

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

    TensorFlow tensor的拼接實例

    今天小編就為大家分享一篇TensorFlow tensor的拼接實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論

海兴县| 堆龙德庆县| 凌海市| 潍坊市| 汾阳市| 宁蒗| 南乐县| 土默特左旗| 江源县| 中江县| 瓮安县| 阿城市| 建宁县| 和平县| 仲巴县| 康保县| 周宁县| 镇远县| 贵阳市| 梧州市| 金溪县| 焦作市| 建德市| 沁阳市| 双牌县| 永城市| 许昌市| 开原市| 莒南县| 萝北县| 东兰县| 阿鲁科尔沁旗| 永丰县| 肥乡县| 田东县| 马边| 邵阳市| 屯门区| 江都市| 皋兰县| 泰宁县|