❶ 如何使用python連接mysql資料庫
在 Python 語言環境下我們這樣連接資料庫。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是連接資料庫的背後發生了什麼呢?
答案
當我們通過驅動程序(mysql-connector-python,pymysql)連接 MySQL 服務端的時候,就是把連接參數傳遞給驅動程序,驅動程序再根據參數會發起到 MySQL 服務端的 TCP 連接。當 TCP 連接建立之後驅動程序與服務端之間會按特定的格式和次序交換數據包,數據包的格式和發送次序由MySQL 協議規定。MySQL 協議:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整個連接的過程中 MySQL 服務端與驅動程序之間,按如下的次序發送了這些包。
MySQL 服務端向客戶端發送一個握手包,包里記錄了 MySQL-Server 的版本,默認的授權插件,密碼鹽值(auth-data)。
2. MySQL 客戶端發出 ssl 連接請求包(如果有必要的話)。
3. MySQL 客戶端發出握手包的響應包,這個包時記錄了用戶名,密碼加密後的串,客戶端屬性,等等其它信息。
4. MySQL 服務端發出響應包,這個包里記錄了登錄是否成功,如果沒有成功也會給出錯誤信息。
❷ python如何訪問資料庫
1.背景:
python提供了很多資料庫介面, 常用的資料庫有 MS SQL Server /mysql /oracle 等。
打開鏈接 https://wiki.python.org/moin/DatabaseInterfaces
是python 關於資料庫介面的一個總結 , 可以看到python支持的訪問的資料庫系統。
2.模塊:
python 主要是通過模塊和資料庫連接的。
2.1 安裝模塊:
如果使用anconda,本身就會集合很多模塊,不需要手動安裝。如果用pycharm就要手動安裝模塊。
安裝模塊流程:
下載模塊擴展包放到路徑下——>cmd找到相應路徑——> pip install +擴展包名字
下面列舉一些常用連接資料庫的模塊:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi
不同模塊連接的資料庫不同, 支持的版本系統有的也不一樣。但是大體用法都是相近的, 因為有DB-API
相關推薦:《Python教程》
3.Python DB-API
3.1背景:
在沒有DB-API 之前, 不同資料庫有不同的資料庫介面程序, 這就導致python 訪問 database 的介面程序非常混亂。如果我們學習了python 訪問 mysql 的介面程序, 然後要切換到另一個資料庫上, 我們還要在學習另外一個資料庫的介面程序。python DB-API就是為了解決介面程序混亂而生成的。有了DB-API, 在不同資料庫上移植代碼就變得簡單的多了。
3.2Python DB-API:
Python 定義了一套操作資料庫的 DB-API 介面,它是一個規范,定義了一系列必須的對象和資料庫存取方式,以便為不同的底層資料庫系統提供一致的訪問介面
這個鏈接就是python 官方給定的 DB-API 的說明 https://www.python.org/dev/peps/pep-0249/
3.3 Python DB--API的內容:
連接對象:
?Connect()創建連接:host/server /user/password/db connect方法生成一個connect對象, 我們通過這個對象來訪問資料庫。符合標準的模塊都會實現connect方法。
?close():關閉連接
?commit():提交當前事務。做出某些更改後確保已經進行了提交,這樣才可以將這些修改真正地保存到database中
?rollback() 回滾上一次調用 commit()以來對資料庫所做的更改
?cursor():創建游標。系統為用戶開通的一個數據緩沖區,用於存放SQL語句執行結果。cursor游標是有狀態的,它可以記錄當前已經取到結果的第幾個記錄了,因此,一般你只可以遍歷結果集一次。在上面的情況下,如果執行fetchone()會返回為空。這一點在測試時需要注意
游標對象:
?Execute()執行一個資料庫查詢或命令。 execute 執行sql 語句之後運行的結果不會直接output 出來 , 而是放到了一個緩存區, 要用 fetch語句+print 可以查詢sql運行的結果
?fetchone ()得到結果集的下一行
?fetchmany(size)得到結果集的下幾行
?fetchall()返回結果集中剩下的所有行
?rowcount 返回影響的行數
?Close()關閉游標對象
3.4Python DB--API的工作原理及流程:
如圖所示如果把python 和資料庫比作兩個不同的地點, connection 就是路, 能連接python和database。cursor就像在路上行駛的小貨車, 可以用於執行sql 語句, 以及存儲sql 運行的結果。
流程:
4.MS SQL Server 示例:
4.1 導入模塊、創建連接:
4.2 創建游標: 游標創建之後就可以對資料庫進行查詢更改了!
4.3對數據進行操作(創建表、插入行、更新數據、增加列、刪除行、列、表):
4.4 查詢 獲取行:
5.其他:
使用游標的時候要注意, 每次連接只能有一個游標查詢處於活躍狀態。 code演示:
execute()循環和 executemany() 插入100000 條數據測速:
❸ 如何用python pymysql查看資料庫
1、python安裝目錄設定為d:/python342、pymysql安裝方法為:解壓下載的文件,在cmd中運行: python setup.py install。
檢驗安裝安裝是否成功的方法:import pymysql 。 如果不報錯 說明安裝成功。
3、mysql安裝目錄為D:/phpStudy/MySQL。為避免更多配置問題,可在啟動phpstudy後,將其設為系統服務
4、基本操作:
(1)導入pymysql: import pymysql
(2)連接資料庫:
conn=pymysql.connect(host='localhost',user='root',passwd='root',db='ere',charset='utf8')
務必注意各等號前面的內容!charset參數可避免中文亂碼
(3)獲取操作游標:cur=conn.cursor()
(4)執行sql語句,插入記錄:sta=cur.execute("insert 語句") 執行成功後sta值為1。更新、刪除語句與此類似。
(5)執行sql語句,查詢記錄:cur.execute("select語句") 執行成功後cur變數中保存了查詢結果記錄集,然後再用循環列印結果:
for each in cur:
print(each[1].decode('utf-8')) # each[1] 表示當前游標所在行的的第2列值,如果是中文則需要處理編碼
❹ python怎麼打開資料庫文件
以打開mysql資料庫為例來說明:
#!/usr/bin/python
import MySQLdb
# 打開資料庫連接
db = MySQLdb.connect("大沖localhost","testuser","test123","TESTDB" )
#打開游標
cursor = db.cursor()
# 執行資料庫查詢
cursor.execute("SELECT VERSION()")
# 獲野鉛取結果集的第一行
data = cursor.fetchone()
print "Database version : %s " % data
# 關閉連滾脊殲接
db.close()
❺ python如何訪問sqlite資料庫
import sqlite3#sqlite類#這是我在一個爬蟲項目慎睜里寫的def postSQL(name, num, grade): db = sqlite3.connect("stu_num.db") c = db.cursor() c.execute("")#執行sql語句 db.commit()#如果有更和孝頃改資料庫喚陸內容,數據需要提交 db.close()
❻ python如何使用資料庫
你可以訪問Python資料庫介面及API查看詳細的支持資料庫列表。不同的資料庫你需要下載不同的DB API模塊笑慶滾,例如你需要訪問Oracle資料庫和Mysql數據,你需要下載Oracle和MySQL資料庫模塊。差前
DB-API 是一個規范. 它定義了一系列必須的對象和資料庫存取方式, 以便為各種各樣的底層資料庫系統和多種多樣的資料庫介面程序提供一致的訪問介面 。
Python的DB-API,為大多數的資料庫實現了介面,使用它連接碰余各資料庫後,就可以用相同的方式操作各資料庫。
❼ Python資料庫API(DB API)
雖然 Python 需要為操作不同的資料庫使用不同的模塊,但不同的資料庫模塊並非沒有規律可循,因為它們基本都遵守 Python 制訂的 DB API 協議,目前該協議的最新版本是 2.0,因此這些資料庫模塊有很多操作其實都是相同的。下面先介紹不同資料庫模塊之間的通用內容。
全局變數
Python 推薦支持 DB API 2.0 的資料庫模塊都應該提供如下 3 個全局變數:
apilevel:該全局變數顯示資料庫模塊的 API 版本號。對於支持 DB API 2.0 版本的資料庫模塊來說,該變數值通常就是 2.0。如果這個變數不存在,則可能該資料庫模塊暫時不支持 DB API 2.0。讀者應該考慮選擇使用支持該資料庫的其他資料庫模塊。
threadsafety:該全局變數指定資料庫模塊的線程安全等級,該等級值為 0~3 ,其中 3 代表該模塊完全是線程安全的;1 表示該模塊具有部分線程安全性,線程可以共享該模塊,但不能共享連接;0 則表示線程完全不能共享該模塊。
paramstyle:該全局變數指定當 SQL 語句需要參數時,可以使用哪種風格的參數。該變數可能返回如下變數值:
format:表示在 SQL 語句中使用 Python 標準的格式化字元串代表參數。例如,在程序中需要參數的地方使用 %s,接下來程序即可為這些參數指定參數值。
pyformat:表示在 SQL 語句中使用擴展的格式代碼代表參數。比如使用 %(name),這樣即可使用包含 key 為 name 的字典為該參數指定參數值。
qmark:表示在 SQL 語句中使用問號(?)代表參數。在 SQL 語句中有幾個參數,全部用問號代替。
numeric:表示在 SQL 語句中使用數字佔位符(:N)代表參數。例如:1 代表一個參數,:2 也表示一個參數,這些數字相當於參數名,因此它們不一定需要連續。
named:表示在 SQL 語句中使用命名佔位符(:name)代表參數。例如 :name 代表一個參數,:age 也表示一個參數。
通過查閱這些全局變數,即可大致了解該資料庫 API 模塊的對外的編程風格,至於該模塊內部的實現細節,完全由該模塊實現者負責提供,通常不需要開發者關心。
資料庫 API 的核心類
遵守 DB API 2.0 協議的資料庫模塊通常會提供一個 connect() 函數,該函數用於連接資料庫,並返回資料庫連接對象。
資料庫連接對象通常會具有如下方法和屬性:
cursor(factory=Cursor):打開游標。
commit():提交事務。
rollback():回滾事務。
close():關閉資料庫連接。
isolation_level:返回或設置資料庫連接中事務的隔離級別。
in_transaction:判斷當前是否處於事務中。
上面第一個方法可以返回一個游標對象,游標對象是 Python DB API 的核心對象,該對象主要用於執行各種 SQL 語句,包括 DDL、DML、select 查詢語句等。使用游標執行不同的 SQL 語句返回不同的數據。
游標對象通常會具有如下方法和屬性:
execute(sql[, parameters]):執行 SQL 語句。parameters 參數用於為 SQL 語句中的參數指定值。
executemany(sql, seq_of_parameters):重復執行 SQL 語句。可以通過 seq_of_parameters 序列為 SQL 語句中的參數指定值,該序列有多少個元素,SQL 語句被執行多少次。
executescript(sql_script):這不是 DB API 2.0 的標准方法。該方法可以直接執行包含多條 SQL 語句的 SQL 腳本。
fetchone():獲取查詢結果集的下一行。如果沒有下一行,則返回 None。
fetchmany(size=cursor.arraysize):返回查詢結果集的下 N 行組成的列表。如果沒有更多的數據行,則返回空列表。
fetchall():返回查詢結果集的全部行組成的列表。
close():關閉游標。
rowcount:該只讀屬性返回受 SQL 語句影響的行數。對於 executemany() 方法,該方法所修改的記錄條數也可通過該屬性獲取。
lastrowid:該只讀屬性可獲取最後修改行的 rowid。
arraysize:用於設置或獲取 fetchmany() 默認獲取的記錄條數,該屬性默認為 1。有些資料庫模塊沒有該屬性。
description:該只讀屬性可獲取最後一次查詢返回的所有列的信息。
connection:該只讀屬性返回創建游標的資料庫連接對象。有些資料庫模塊沒有該屬性。
總結來看,Python 的 DB API 2.0 由一個 connect() 開始,一共涉及資料庫連接和游標兩個核心 API。它們的分工如下:
資料庫連接:用於獲取游標、控制事務。
游標:執行各種 SQL 語句。
掌握了上面這些 API 之後,接下來可以大致歸納出 Python DB API 2.0 的編程步驟。
操作資料庫的基本流程
使用 Python DB API 2.0 操作資料庫的基本流程如下:
調用 connect() 方法打開資料庫連接,該方法返回資料庫連接對象。
通過資料庫連接對象打開游標。
使用游標執行 SQL 語句(包括 DDL、DML、select 查詢語句等)。如果執行的是查詢語句,則處理查詢數據。
關閉游標。
關閉資料庫連接。
下圖顯示了使用 Python DB API 2.0 操作資料庫的基本流程。
❽ python怎麼調用資料庫
安裝MySQL驅動
由於MySQL伺服器以獨立的進程運行,並通過網路對外服務,所以,需要支持Python的MySQL驅動來連接到MySQL伺服器。
MySQL官方提供了mysql-connector-python驅動,但是安裝的時候需要給pip命令加上參數--allow-external:
pip install mysql-connector-python --allow-external mysql-connector-python
如果上面的命令安裝失敗,可以試試另一個驅動:
pip install mysql-connector
除了使用mysql.connector還可以使用pymysql