Python操作MySQL資料庫的方法

2022-09-25 11:57:10 字數 3750 閱讀 3854

pymsql

pymsql是python中操作mysql的模組,其使用方法和mysqldb幾乎相同。

**安裝

pip3 install pymysql

使用操作

1、執行sql

import pymysql

# 建立連線

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

# 建立游標

cursor = conn.cursor()

# 執行sql,並返**影響行數

effect_row = cursor.execute("update hosts set host = '1.1.1.2'")

# 執行sql,並返回受影響行數

#effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))

# 執行sql,並返回受影響行數

#effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])

# 提交,不然無法儲存新建或者修改的資料

conn.commit()

# 關閉游標

cursor.close()

# 關閉連線

conn.close()

2、獲取新建立資料自增id

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

cursor = conn.cursor()

cursor.executemany(www.cppcns.com"insert into ho程式設計客棧sts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])

conn.commit()

cursor.close()

conn.close()

# 獲取最新自增id

new_id = cursor.lastrowid

3、獲取查詢資料

import pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

cursor = conn.cursor()

cursor.execute("select * from hosts")

# 獲取第一行資料

row_1 = cursor.fetchone()

# 獲取前n行資料

# row_2 = cursor.fetchmany(3)

# 獲取所有資料

# row_3 = cursor.fetchall()

conn.commit()

cursor.close()

conn.close()

注:在fetch資料時按照順序進行,可以使用cursor.scroll(num,mode)來移動游標位置,如:

cursor.scroll(1,mode='relative') # 相對當前位置移動

cursor.scroll(2,mode='absolute') # 相對絕對位置移動

4、fetch資料型別

關於預設獲取的資料是元祖型別,如果想要或者字典型別的資料,即:

ienmaxautmport pymysql

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')

# 游標設定為字典型別

cursor = conn.cursor(cursor=pymysql.cursors.dictcursor)

r = cursor.execute("call p1()")

result = cursor.fetchone()

conn.commit()

cursor.close()

conn.close()

資料庫補充

匯出現有資料庫資料:

mysqldump -u使用者名稱 -p密碼 資料庫名稱 >匯出檔案路徑           # 結構+資料

mysqldump -u使用者名稱 -p密碼 -d 資料庫名稱 >匯出檔案路徑       # 結構

匯入現有資料庫資料:

mysqldump -uroot -p密碼  資料庫名稱 < 檔案路徑

mysql中四種常用儲存引擎的介紹

(1):myisam儲存引擎:不支援事務、也不支援外來鍵,優勢是訪問速度快,對事務完整性沒有 要求或者以select,insert為主的應用基本上可以用這個引擎來建立表

支援3種不同的儲存格式,分別是:靜態表;動態表;壓縮表

靜態表:表中的字段都是非變長字段,這樣每個記錄都是固定長度的,優點儲存非常迅速,容易快取,出現故障容易恢復;缺點是占用的空間通常比動態表多(因為儲存時會按照列的寬度定義補足空格)ps:在取資料的時候,缺省會把字段後面的空格去掉,如果不注意會把資料本身帶的空格也會忽略。

動態表:記錄不是固定長度的,這樣儲存的優點是占用的空間相對較少;缺點:頻繁的更新、刪除資料容易產生碎片,需要定期執行optimize table或者myisamchk-r命令來改善效能

壓縮表:因為每個記錄是被單獨壓縮的,所以只有非常小的訪問開支

(2)innodb儲存引擎*

該儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比myisam引擎,寫的處理效率會差一些,並且會占用更多的磁碟空間以保留資料和索引。

innodb儲存引擎的特點:支援自動增長列,支援外來鍵約束

(3):memory儲存引擎

memory儲存引擎使用存在於記憶體中的內容來建立表。每個memory表只實際對應乙個磁碟檔案,格式是.frm。memory型別的表訪問非常的快,因為它的資料是放在記憶體中的,並且預設使用hash索引,但是一旦服務關閉,表中的資料就會丟失掉。

memory儲存引擎的表可以選擇使用btree索引或者hash索引,兩種不同型別的索引有其不同的使用範圍

hash索引優點:

hash 索引結構的特殊性,其檢索效率非常高,索引的檢索可以一次定位,不像b-tree 索引需要從根節點到枝節點,最後才能訪問到頁節點這樣多次的io訪問,所以 hash 索引的查詢效率要遠高於 b-tree 索引。

hash索引缺點: 那麼不精確查詢呢,也很明顯,因為hash演算法是基於等值計算的,所以對於「like」等範圍查詢hash索引無效,不支援;

memory型別的儲存引擎主要用於哪些內容變化不頻繁的**表,或者作為統計操作的中間結果表,便於高效地對中間結果進行分析並得到最終的統計結果,。對儲存引擎為memory的表進行更新操作要謹慎,因為資料並沒有實際寫入到磁碟中,所以一定要對下次重新啟動服務後如何獲得這些修改後的資料有所考慮。

(4)merge儲存引擎

merge儲存引擎是一組myisam表的組合,這些myenmaxautisam表必須結構完全相同,merge表本身並沒有資料,對merge型別的表可以進行查詢,更新,刪除操作,這些操作實際上是對內部的myisam表進行的。

總結本文標題: python操作mysql資料庫的方法

本文位址: /shujuku/mysql/230622.html

python操作mysql查詢資料

首先需要連線資料庫,然後才查詢出資料。例如下表名字為 sinauser iduse id use name11 db12 2db233 db3class database def init self self.conn mysqldb.connect 連線資料庫 host 連線你要取出資料庫的ip,...

python操作MySQL資料庫

堅持每天學一點,每天積累一點點,作為自己每天的業餘收穫,這個文章是我在吃飯的期間寫的,利用自己零散的時間學了一下python操作mysql,所以整理一下。我採用的是mysqldb操作的mysql資料庫。先來乙個簡單的例子吧 import mysqldb try conn mysqldb.connec...

Python操作Mysql資料庫

coding utf8 author yangjing import mysqldb 查詢。def select host user root password port 3306,db sql connect mysqldb.connect host host,user user,passwd p...