Python資料庫操作
之前檢視基礎內容的時候,發現少了一篇有關於資料庫的介紹,這裡給大家補上。
在我們實際的開發過程中,有關資料的儲存主要有三種形式。
1.將資料儲存到記憶體當中,這樣的話使用會很方便,讀寫速度也會很快,但是當我們程式關閉的時候,記憶體會被釋放,資料也會隨之消失。
2.將資料寫入到檔案當中,這樣的話資料的儲存是永久性的,而且不易丟失,但是是開啟關閉檔案,操作資料都會比較的麻煩。
3.將資料儲存到資料庫中,這樣的話資料是永久性的,操作也是比較的方便,但是資料的學習的難度會比較大一點。
資料庫按照性質來劃分,可以分為兩大類。
1.關係型資料庫:資料和資料之間存在著廣泛的聯絡,mysql sqlite,可以通過一個數據訪問到其他的資料
2.非關係型資料庫:資料是單獨的,資料之間的耦合度比較低,對資料進行增刪改不會影響到其他的資料
資料庫按照規模的大小來說,分為四種:
1.大型資料庫:oracle
2.中型資料庫:SQlserver
3.小型資料庫:mySQL
4.微型資料庫:sqlite
建立資料庫的時候,我們先要引入一個包 import sqlite3
con=sqlite3.connect('myDB') 這個是連線到一個數據庫,如果資料庫存在則連線,如果資料庫不存在,則建立。
cursor=con.cursor() 設定資料庫游標,游標是用來執行資料庫命令的。
1.建立資料庫,以及建立資料庫中的表格。
import sqlite3
con=sqlite3.connect('myDB')
cursor=con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS my_info(name text,age int, fond text)')
con.commit()
點選執行,會發現左邊有一個如下圖的內容,然後操作,如圖所示:
把這個直接拉到右邊的框裡面,結果如下:
點選my_info,結果如下
如此,便是建立成功了。
接下來,我們要對資料庫進行操作,資料庫操作,我們可以對資料庫進行增刪改查操作。
一個專案裡面可能會用到多個數據庫,但是絕大部分的情況只有一個。
一個數據庫裡面可以有多張表格,一個表格中可以有多種欄位,而一個欄位裡面可以有多條資料。
1.我們先進行增的操作
import sqlite3
con=sqlite3.connect('myDB')
cursor=con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS my_info(name text,age int, fond text)')
con.commit()
#新增資料
cursor.execute('INSERT INTO my_info(name, age, fond)VALUES ("科比",30,"打籃球")')
con.commit()
點選執行,然後重新開啟my_info,結果如下:
這裡我們只要修改VALUES後面的資料就行了,這裡我們多新增幾個資料。
這裡我們就先新增這四個資料吧,然後我們就把新增資料這行程式碼註釋掉,因為接下來我們要做其他的操作,如果不註釋的話,就會執行一次,新增一次,所以,我們新增完成後,就把它先註釋掉。
2.刪除資料操作
如果我們想刪除某一個數據,比如我們這裡刪除邁克爾傑克遜。我們可以這樣寫:
import sqlite3
con=sqlite3.connect('myDB')
cursor=con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS my_info(name text,age int, fond text)')
con.commit()
#刪除資料
cursor.execute('DELETE FROM my_info WHERE name="邁克爾傑克遜"')
con.commit()
點選執行,進入my_info,重新整理一下,Ctrl+F5.結果如下:
如果我們想刪除一個條件的,比如大於年齡大於40的。
import sqlite3
con=sqlite3.connect('myDB')
cursor=con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS my_info(name text,age int, fond text)')
con.commit()
#刪除資料
cursor.execute('DELETE FROM my_info WHERE age>40')
con.commit()
點選執行,進入my_info,重新整理一下,Ctrl+F5.結果如下:
如果我們想多來幾個限制的條件,我們可以在後面用and或者or連線。
cursor.execute('DELETE FROM my_info WHERE age>30 or name="周杰倫"')
con.commit()
cursor.execute('DELETE FROM my_info WHERE age>30 and name="周杰倫"')
con.commit()
or只要有一個條件滿足,就直接刪除;and必須兩個條件同時滿足才可以刪除。
如果我們想刪除表中的全部資料,操作如下:
cursor.execute('DELETE FROM my_info')
con.commit()
點選,執行,重新整理一下。各位小夥伴看看是不是表中資料全部沒了0.0
3.修改資料
由於我們資料在第二步,基本刪完了,所以我們先要新增資料。第一步的操作,不再詳述。
我們現在資料如下:
接下來,我們要修改資料,先修改單個的資料,我想把小明修改成小江。
import sqlite3
con=sqlite3.connect('myDB')
cursor=con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS my_info(name text,age int, fond text)')
con.commit()
#修改資料
cursor.execute('UPDATE my_info set name="小江" WHERE name="小明"')
con.commit()
點選執行,進入my_info,重新整理一下結果為:
小明已經變成小江了。
想要修改多條資料時:
cursor.execute('UPDATE my_info SET name="小玲",age=20 WHERE name="小紅"')
con.commit()
點選執行,進入my_info,重新整理一下結果為:
小紅變成了小玲,年齡17變成了20.
4.查詢資料
cursor.execute('SELECT *FROM my_info')
#抓取一個數據,資料為第一條資料
result=cursor.fetchone()
print(result)
#('小江', 18, '釣魚')
cursor.execute('SELECT *FROM my_info')
#抓取全部的資料
result=cursor.fetchone()
print(result)
#[('小江', 18, '釣魚'), ('小玲', 20, '跳舞'), ('小蘭', 19, '唱歌'), ('小天', 20, '打籃球')]
cursor.execute('SELECT *FROM my_info')
#抓取幾條資料,many()裡面的數字代表幾條資料,按照順序獲取
result=cursor.fetchmany(3)
print(result)
#[('小江', 18, '釣魚'), ('小玲', 20, '跳舞'), ('小蘭', 19, '唱歌')]
查詢固定的某一條資料:
cursor.execute('SELECT *FROM my_info WHERE name="小天"')
result=cursor.fetchone()
print(result)
#[('小天', 20, '打籃球')]
在這個其實第二段程式碼,我們選擇哪種都可以,但我們一般選擇fetchone。
查詢某一個條件的對應資料。
cursor.execute('SELECT name FROM my_info WHERE age>19')
result=cursor.fetchall()
print(result)
#[('小玲',), ('小天',)]
資料庫,my_info的表格中年齡大於19的有小玲和小天,可見我們的輸出結果是正確的。
最後,給大家說一個大家慎用的方法,刪除整個表格。
cursor.execute('DROP TABLE IF EXISTS my_info')
con.commit()
點選執行,在下圖的地方點選重新整理。
然後,我們就會看到,整個列表就消失,被刪除了。此方法要慎用。
給大家分享的基本的資料庫操作就這麼多了,資料庫和類和方法的結合很多,有時間機會的話定會和大家分享。