Python資料庫:建立以及基本操作

使用sqlite3建立資料庫以及基礎操作

kuan_min
9 min readAug 17, 2020

前言

今天將會分享如何使用python的sqlite3套件做資料庫的基礎操作,並不會針對資料庫語法做解說。

將學習到

  • 使用sqlite3建立資料庫
  • 使用sqlite3匯入資料
  • 使用sqlite3資料搜尋
  • 使用sqlite3 資料更新、刪除

環境設定

win10 Anaconda的jupyter(6.0.3)

DB Browser(SQLite):官網

使用套件

import sqlite3

開始工作

建立資料庫

import sqlite3
#drop table
conn = sqlite3.connect('D.db')#連結資料庫,如果沒有則會建立
cursor = conn.cursor()#啟用游標
cursor.execute("DROP TABLE IF EXISTS away;")#查看是否存在away
cursor.execute("DROP TABLE IF EXISTS home;")#查看是否存在home
print ("D.db created successfully")
conn.commit()#執行sql語法,每次執行都要提交sql語法
cursor.close()#每次執行都要關閉游標
conn.close()#每次執行都要關閉連結

設定資料庫格式

#creat table
conn = sqlite3.connect(‘D.db’)#連結資料庫
print (“Opened database successfully”)
cursor = conn.cursor()#啟用游標
#設定away資料表
cursor.execute('''CREATE TABLE IF NOT EXISTS away
(id INT PRIMARY KEY NOT NULL,
name varchar(8) NOT NULL,
car varchar(30) NOT NULL,
color varchar(10) NOT NULL);''')
print (“Table away created successfully”)
#設定home資料表
cursor.execute('''CREATE TABLE IF NOT EXISTS home
(id INT PRIMARY KEY NOT NULL,
name varchar(8) NOT NULL,
car varchar(30) NOT NULL,
color varchar(10) NOT NULL);''')
print (“Table home created successfully”)
conn.commit()#執行sql語法
cursor.close()#關閉游標
conn.close()#關閉連結

匯入資料

#insert
conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”)
#匯入資料至away資料表
cursor.execute(“INSERT INTO away (id,name,car,color) \
VALUES (001, ‘藤原拓海’, ‘TOYOTA AE86’, ‘熊貓’ )”)
cursor.execute(“INSERT INTO away (id,name,car,color) \
VALUES (002, ‘高橋涼介’,’MAZDA RX-7',’白’ )”)
cursor.execute(“INSERT INTO away (id,name,car,color) \
VALUES (003, ‘高橋啟介’,’MAZDA RX-7',’黃’ )”)
#匯入資料至home資料表
cursor.execute(“INSERT INTO home (id,name,car,color) \
VALUES (004, ‘二宮大輝’,’Honda K9',’黃’ )”)
cursor.execute(“INSERT INTO home (id,name,car,color) \
VALUES (005, ‘星野好造’,’Nissan GT-R R32',’深黃’ )”)
cursor.execute(“INSERT INTO home (id,name,car,color) \
VALUES (006, ‘乾信司’,’TOYOTA AE86',’熊貓’ )”)
conn.commit()#執行sql語法
print(“Records created successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結

搜尋資料

#search
conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”)
#搜尋所有away的欄位資料
cursor = cursor.execute(“SELECT * from away”)
for row in cursor:
print(row)
#搜尋所有home的欄位資料
cursor = cursor.execute(“SELECT * from home”)
#顯示
for row in cursor:
print(row)
conn.commit()#執行sql語法
print(“Operation done successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結
搜尋away和home所有的資料
#search
conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”,’\n’)
#搜尋id, name, car, color欄位且在color是"黃"的
cursor = cursor.execute(“SELECT id, name, car, color from home where color=’黃’”)
#顯示
for row in cursor:
print(“id = “, row[0])
print(“name = “, row[1])
print(“car = “, row[2])
print(“color = “, row[3], “\n”)
conn.commit()#執行sql語法
print(‘\n’,”Operation done successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結
搜尋home資料表color是黃的資料

更新資料

#update
conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”)
#更新home欄位裡id是4的color成"白"
cursor.execute(“UPDATE home set color = ‘白’ where id = ‘4’ “)
#顯示更新幾筆
print(“Total number of rows updated :”, conn.total_changes)
#顯示
cursor = conn.execute(“SELECT id, name, car, color from home”)
for row in cursor:
print(“id = “, row[0])
print(“name = “, row[1])
print(“car = “, row[2])
print(“color = “, row[3], “\n”)
conn.commit()#執行sql語法
print( “Operation done successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結
更新id=4的color為白

刪除資料

#DELETE
conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”)
#刪除name=’星野好造’
cursor.execute(“DELETE from home where name = ‘星野好造’;”)
conn.commit()#執行sql語法
print( “Operation done successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結

匯出資料到pandas和.csv

conn = sqlite3.connect(‘D.db’)#連結資料庫
cursor = conn.cursor()#啟用游標
print(“Opened database successfully”)
import pandas as pd
#匯入至pandas
df = pd.DataFrame(cursor, columns= [‘id’, ‘name’, ‘car’, ‘color’])
print(df,’\n’)
#匯入至 .csv
df.to_csv (r’drift_home.csv’, index = False, header=True)
print( “Operation done successfully”)
cursor.close()#關閉游標
conn.close()#關閉連結

成果展示

DB Browser(SQLite)顯示away
DB Browser(SQLite)顯示home

完整程式碼

小結

我們針對如何在python操作資料庫已有基礎了,可以延伸至之前所爬蟲的資料上,如果你對於以上的內容有建議歡迎提出,一起討論絕對是成長的捷徑!!

參考資料

Python SQL 語法簡單入門
[資料庫筆記] Python 使用 MySQL資料庫的教學與安裝
透過 Python 將資料存入 SQLite 教學

--

--

kuan_min

你好,這裡是我分享以及筆記有關程式的文章,歡迎有興趣或志同道合的朋友給我支持或鼓勵