#前言
-
json資料來自網路,所以執行此程式必須連上網路。
#說明
-
sqlite3套件,是使用SQL資料庫查詢語言處理。
-
執行程式中加一點輸入
-
輸入資料庫名稱,例如,abc.db
-
輸入資料表名稱,例如,mytable
#程式功能說明
#需要DB Browser for SQLite 來幫忙
- python程式處理資料很快,但是並沒有一個方便的資料庫管理介面,這裡 列有一些工具。
#程式碼
- #參考來源: fatdodo所發表的文章,https://cheng-min-i-taiwan.blogspot.com/2019/12/pythonsqlite-open-data.html
- import os
- import requests
- import json
- import sqlite3 ###在python3它是內建,不必在安裝。
- '''
- 這個程式取自網路資料,所以欄位是固定的,如35-38行。
- 1. db=sqlite3.connect("dbName") 建立資料庫
- 2. cursor=db.cursor() 指定cursor來定位資料
- 3. ###用cursor.execute()執行sql指令 CREATE, 建立table。注意,最好加 IF NOT EXISTS,才不會因為table已存在而出錯。
- 4. 用cursor.executemany(sql, data) 執行sql指令,一次多筆資料放進資料表
- 5. db.commit() 寫入資料庫
- '''
- os.system("cls")
- #建立資料庫
- print("=====建立資料庫=====\n\n")
- dbName = input("輸入資料庫名稱,例如abc.db--> ")
- db = sqlite3.connect(dbName)
- cursor = db.cursor()
- print("{}資料庫已經成功建立\n".format(dbName))
- tableName=input("輸入資料表名稱--> ")
- #準備資料
- url = 'http://www.ilepb.gov.tw/api/ILEPB01001/format/JSON'
- print("讀取來自「{}」的資料".format(url))
- resp = requests.get(url)
- json_dict = json.loads(resp.text)
- data = list()
- for i in range(len(json_dict)):
- t = (json_dict[i]['加油站名稱'],
- json_dict[i]['加油站地址'],
- json_dict[i]['負責人'],
- json_dict[i]['聯絡電話'])
- data.append(t)
- #建資料表,使用sql查詢語言。
- sql = '''CREATE TABLE IF NOT EXISTS {:s}(
- ID INTEGER PRIMARY KEY AUTOINCREMENT,
- GAS TEXT NOT NULL,
- ADDR TEXT NOT NULL,
- OWNER TEXT NOT NULL,
- TEL TEXT);'''.format(tableName)
- try:
- cursor.execute(sql)
- except Exception as e:
- print(e)
- #將資料寫入資料表
- #多筆資料一次放入,data是先前的tuple
- sql = 'INSERT INTO {:s} (GAS, ADDR, OWNER, TEL) VALUES (?,?,?,?);'.format(tableName)
- try:
- cursor.executemany(sql, data) #寫入多筆資料的命令
- db.commit() #這個指令才是真正寫入資料庫
- except Exception as e:
- print(e)
- print(".......")
- print("{}資料表已經完成輸入資料".format(dbName))
- cursor.close()
|
- #參考來源: fatdodo所發表的文章,https://cheng-min-i-taiwan.blogspot.com/2019/12/pythonsqlite-open-data.html
- import os
- import sqlite3 ###在python3它是內建,不必在安裝。
- '''
- 1. db=sqlite3.connect("dbName") 建立資料庫
- 2. cursor=db.cursor() 指定cursor來定位資料
- 3. ###用cursor.execute()執行sql指令 CREATE, 建立table。注意,最好加 IF NOT EXISTS,才不會因為table以存在而出錯。
- 4. 用cursor.executemany(sql, data) 執行sql指令,一次多筆資料放進資料表
- 5. db.commit() 寫入資料庫
- '''
- def show_table(cursor,tbName):
- sql = 'SELECT * FROM {:s} ORDER BY id ASC;'.format(tbName)
- try:
- cursor.execute(sql)
- rows= cursor.fetchall()
- for i, row in enumerate(rows,1): #1代表i從1開始,內定是從0開始。
- print(i, '>', row)
- except Exception as e:
- print(e)
- os.system("cls")
-
- #開啟資料庫
- print("=====觀看資料表內容=====\n\n")
- dbName = input("輸入資料庫名稱,例如abc.db--> ")
- db = sqlite3.connect(dbName)
- cursor = db.cursor()
- print("{}資料庫已經成功開啟\n".format(dbName))
- tableName = input("輸入要觀看的資料表--> ")
-
- show_table(cursor,tableName)
- cursor.close()
|
- #參考來源: fatdodo所發表的文章,https://cheng-min-i-taiwan.blogspot.com/2019/12/pythonsqlite-open-data.html
- import os
- import sqlite3 ###在python3它是內建,不必在安裝。
- from prettytable import PrettyTable
- '''
- 1. db=sqlite3.connect("dbName") 建立資料庫
- 2. cursor=db.cursor() 指定cursor來定位資料
- 3. ###用cursor.execute()執行sql指令 CREATE, 建立table。注意,最好加 IF NOT EXISTS,才不會因為table以存在而出錯。
- 4. 用cursor.executemany(sql, data) 執行sql指令,一次多筆資料放進資料表
- 5. db.commit() 寫入資料庫
- '''
- def show_table(cursor,tbName):
- #建立表格項目名稱
- table = PrettyTable(['編號','加油站名稱','加油站地址','負責人','聯絡電話'])
- table.align = "l"
- table.border=False
- table.padding_width=3
-
- sql = 'SELECT * FROM {:s} ORDER BY id ASC;'.format(tbName)
- try:
- cursor.execute(sql)
- rows= cursor.fetchall()
- for row in rows:
- table.add_row(row)
- #印出table
- print(table)
- except Exception as e:
- print(e)
- os.system("cls")
-
- #開啟資料庫
- print("=====觀看資料表內容=====\n\n")
- dbName = input("輸入資料庫名稱,例如abc.db--> ")
- db = sqlite3.connect(dbName)
- cursor = db.cursor()
- print("{}資料庫已經成功開啟\n".format(dbName))
- tableName = input("輸入要觀看的資料表--> ")
-
- show_table(cursor,tableName)
- cursor.close()
|
沒有留言:
張貼留言