Python連接數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢的操作代碼
mysql數(shù)據(jù)庫(mariadb)
連接數(shù)據(jù)庫
首先,你需要使用MySQLdb.connect()函數(shù)建立與MySQL數(shù)據(jù)庫的連接。你需要提供數(shù)據(jù)庫服務(wù)器的地址(host),用戶名(user),密碼(passwd),以及你想要操作的數(shù)據(jù)庫名稱(db)。
創(chuàng)建Cursor對象
一旦建立了數(shù)據(jù)庫連接,你可以使用連接對象的cursor()方法來創(chuàng)建一個cursor對象。這個方法返回一個cursor實例,你可以使用這個實例來執(zhí)行SQL查詢和命令。
模塊安裝
python3 安裝pip3 install mysqlclient
代碼
# 引入模塊 import MySQLdb # 連接數(shù)據(jù)庫 db = MySQLdb.connect(host="localhost", user="your_username", passwd="your_password", db="your_database") # 創(chuàng)建cursor對象 cursor = db.cursor() 使用Cursor執(zhí)行SQL語句:創(chuàng)建了cursor對象之后,你可以使用它的execute()方法來執(zhí)行SQL語句。例如,你可以執(zhí)行SELECT查詢來從數(shù)據(jù)庫中檢索數(shù)據(jù),或者執(zhí)行INSERT、UPDATE、DELETE等語句來修改數(shù)據(jù)。 # 執(zhí)行SQL查詢 cursor.execute("SELECT * FROM your_table") 獲取查詢結(jié)果:如果執(zhí)行的是查詢(如SELECT語句),你可以使用cursor對象的fetchone()、fetchmany()或fetchall()方法來獲取結(jié)果。 # 獲取所有查詢結(jié)果 results = cursor.fetchall() for row in results: print(row) 關(guān)閉Cursor和連接:完成數(shù)據(jù)庫操作后,你應(yīng)該關(guān)閉cursor對象并關(guān)閉數(shù)據(jù)庫連接,以釋放資源。 # 關(guān)閉cursor cursor.close() # 關(guān)閉數(shù)據(jù)庫連接 db.close()
cursor對象的fetchone()、fetchmany(size)和fetchall()方法是用于從游標(biāo)中檢索由execute()方法執(zhí)行的查詢結(jié)果的三種不同方法。它們的主要區(qū)別在于它們檢索結(jié)果的方式和數(shù)量:
fetchone():
這個方法每次檢索結(jié)果集的下一行。
它返回一個包含下一行數(shù)據(jù)的元組,如果沒有更多的行,則返回None。
使用fetchone()通常在逐行處理結(jié)果集時非常有用。
cursor.execute("SELECT * FROM your_table") while True: row = cursor.fetchone() if row is None: break print(row)
fetchmany(size):
這個方法檢索結(jié)果集中的下size行。
size參數(shù)指定要檢索的行數(shù)。如果結(jié)果集中剩余的行數(shù)少于size,則返回剩余的行。
如果size參數(shù)被省略或設(shè)置為負(fù)數(shù),fetchmany()將嘗試檢索剩余的所有行。
使用fetchmany()可以在一次調(diào)用中獲取多行數(shù)據(jù)。
cursor.execute("SELECT * FROM your_table") result = cursor.fetchmany(3) # 獲取3行數(shù)據(jù) for row in result: print(row)
fetchall():
這個方法檢索結(jié)果集中的所有(剩余的)行。
它返回一個列表,列表中的每個元素都是一行數(shù)據(jù)的元組。
使用fetchall()可以一次性獲取查詢結(jié)果的所有行,這對于處理不是非常大的數(shù)據(jù)集非常有用。
cursor.execute("SELECT * FROM your_table") results = cursor.fetchall() for row in results: print(row)
選擇哪種方法取決于你的具體需求,比如你希望如何從數(shù)據(jù)庫中檢索數(shù)據(jù),以及你的應(yīng)用程序如何處理這些數(shù)據(jù)。如果你需要逐行處理數(shù)據(jù),fetchone()可能是一個好選擇。如果你知道需要檢索的數(shù)據(jù)量不是很大,或者你想一次性獲取所有數(shù)據(jù)進(jìn)行處理,fetchall()可能更合適。而fetchmany()提供了一種折衷的方法,允許你分批次地獲取數(shù)據(jù),這在處理大量數(shù)據(jù)時可以減少內(nèi)存的使用。
Oracle數(shù)據(jù)庫
連接數(shù)據(jù)庫
使用Python連接到Oracle數(shù)據(jù)庫,你可以使用cx_Oracle這個第三方庫,它是專門用于Oracle數(shù)據(jù)庫的Python擴(kuò)展。以下是連接到Oracle數(shù)據(jù)庫的步驟:
模塊安裝
安裝cx_Oracle??梢允褂胮ip來安裝:pip install cx_Oracle
代碼
import cx_Oracle # 連接到Oracle數(shù)據(jù)庫 # 方法1: 使用連接字符串 dsn = cx_Oracle.makedsn('hostname', port, service_name='service_name') connection = cx_Oracle.connect('username', 'password', dsn) # 方法2: 分別提供連接參數(shù) # connection = cx_Oracle.connect('username', 'password', 'hostname', port, service_name='service_name') # 使用cursor執(zhí)行SQL語句 cursor = connection.cursor() cursor.execute("SELECT * FROM your_table") # 獲取查詢結(jié)果 results = cursor.fetchall() for row in results: print(row) # 關(guān)閉cursor和連接 cursor.close() connection.close()
SQL server數(shù)據(jù)庫
連接數(shù)據(jù)庫
使用Python連接到SQL Server數(shù)據(jù)庫,你可以使用pyodbc庫,這是一個流行的Python ODBC接口。以下是連接到SQL Server數(shù)據(jù)庫的步驟:
模塊安裝
使用pip安裝pyodbc庫:pip install pyodbc
代碼
import pyodbc # 連接到SQL Server數(shù)據(jù)庫 conn_str = ( r'DRIVER={ODBC Driver 17 for SQL Server};' r'SERVER=your_server_name;' r'DATABASE=your_database_name;' r'UID=your_username;' r'PWD=your_password' ) conn = pyodbc.connect(conn_str) # 創(chuàng)建cursor對象 cursor = conn.cursor() # 執(zhí)行SQL語句 cursor.execute("SELECT * FROM your_table") # 獲取查詢結(jié)果 results = cursor.fetchall() for row in results: print(row) # 關(guān)閉cursor和連接 cursor.close() conn.close()
相關(guān)文章
python itchat實現(xiàn)微信自動回復(fù)的示例代碼
本篇文章主要介紹了python itchat實現(xiàn)微信自動回復(fù)的示例代碼,可以實現(xiàn)微信自動回復(fù),有興趣的可以了解一下2017-08-08Python基礎(chǔ)學(xué)習(xí)之常見的內(nèi)建函數(shù)整理
所謂的內(nèi)建函數(shù),可以直接使用,而不需要import。下面這篇文章主要給大家整理介紹了關(guān)于Python基礎(chǔ)學(xué)習(xí)之常見的一些內(nèi)建函數(shù),文中通過示例代碼為大家介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09Python+Opencv實現(xiàn)把圖片、視頻互轉(zhuǎn)的示例
這篇文章主要介紹了Python+Opencv實現(xiàn)把圖片、視頻互轉(zhuǎn)的示例,幫助大家更好的理解和實用python,感興趣的朋友可以了解下2020-12-12python不使用for計算兩組、多個矩形兩兩間的iou方式
今天小編就為大家分享一篇python不使用for計算兩組、多個矩形兩兩間的iou方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼
在項目開發(fā)中,有的應(yīng)用程序可以運(yùn)行在web瀏覽器,本文主要介紹了Python PyQt5模塊實現(xiàn)一個瀏覽器的示例代碼,分享給大家,感興趣的可以了解一下2021-07-07Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆實例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆,結(jié)合實例形式分析了Python完全樹定義及堆排序功能實現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Python使用lambda拋出異常實現(xiàn)方法解析
這篇文章主要介紹了Python使用lambda拋出異常實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08