如何在 Python 中從數據庫中獲取數據? 使用 Python 導入數據
已發表: 2021-03-09在當今以技術為主導的工作環境中,數據分析是年輕畢業生、工程師和管理人員必須具備的一項基本技能。 在本文中,我們將介紹如何在 python 中從數據庫中獲取數據,並讓您快速了解一些基本概念。
目錄
使用Python 數據庫進行數據提取
數據提取需要從各種來源檢索數據,有時還會對其進行進一步處理,然後將其遷移到存儲庫以進行進一步分析。 因此,在此過程中會發生某種數據轉換。 Python 是此類數據科學任務的領先編程語言之一。 全世界約有820 萬用戶使用這種通用腳本語言。
在以下指南中,我們將討論使用開源關係數據庫系統 PostgreSQL 的提取方法。 它提供了一個 ROW_TO_JSON 函數,該函數將結果集作為 JSON 對象返回,這些對像被花括號 {} 包圍。 JSON 數據類型將幫助您更方便地操作查詢結果。 但在開始之前,請確保您已經安裝了虛擬環境,例如 psycopg2-binary。
Python 數據庫基礎
假設您有一個美國國家橄欖球聯盟 (NFL) 的 PostgreSQL 數據庫。 這將包括有關球員、教練和球隊席位的信息。 此外,請注意以下詳細信息以了解有關存儲數據的信息:
- 球員數據表包含諸如 athelete_id(主鍵)、球員的名字和姓氏、球衣號碼、體重(以 kg 為單位)、身高(以 m 為單位)以及他們的原籍國等詳細信息。 它還保存著 team_id,一個表示每個運動員隊伍的外鍵。
- 教練的數據表具有coach_id(主鍵)、名字和姓氏以及team_id(引用球隊表字段的外鍵)。
- 最後,有一個球隊表,其中描述了每支足球隊的名稱、會議、排名和總輸贏(分為“主場”和“客場”)。 這裡,主鍵是team_id,在上表中引用。
現在您已經熟悉了數據集,讓我們探索如何編寫 SQL 查詢來檢索團隊列表。 例如,您需要根據會議和排名對足球隊進行排序。 您還想提取每支球隊的運動員或球員人數以及他們的教練姓名。 您可能還想知道球隊在主場和客場的勝負數。
請按照以下步驟開始此過程:
選擇
f.name,
f.城市,
f. 會議,
f.conference_rank,
COUNT(a.player_id) AS number_of_athletes,
CONCAT(c.first_name, ' ', c.last_name) 作為教練,
f.home_wins,
f.away_wins
來自運動員 a、團隊 f、教練 c
WHERE a.team_id = f.team_id
和c.team_id = f.team_id
按f.name 、c.first_name、c.last_name、f.city、f.conference、f.conference_rank、f.home_wins、f.away_wins 分組
按 f.conference、f.conference_rank 排序
在此之後,您可以在我們之前提到的 JSON 函數 (ROW_TO_JSON) 中扭曲查詢。 這會將數據保存到當前目錄中名為 query.sql 的文件中。 現在,繼續下面給出的步驟。
選擇 ROW_TO_JSON(team_info) 來自 (
選擇
f.name,
f.城市,
f. 會議,
f.conference_rank,
COUNT(a.athelete_id)AS number_of_atheletes,
CONCAT(c.first_name, ' ', c.last_name) 作為教練,
f.home_wins,
f.away_wins
來自運動員 a、團隊 f、教練 c
WHERE a.team_id = f.team_id
和c.team_id = f.team_id
按f.name 、c.first_name、c.last_name、f.city、f.conference、f.conference_rank、f.home_wins、f.away_wins 分組
按 f.conference、f.conference_rank 排序
) 作為團隊信息
你會發現每一行都有一個 python 字典的結構。 鍵只是您的查詢返回的字段名稱。
此外,為了避免暴露環境變量,您可以對初始化文件進行一些更改。 根據您的需要選擇以下任何一種方法:
- 對於 Windows:控制面板 → 系統 → 高級系統設置 → 高級選項卡 → 環境變量。
- 對於類 Unix 環境:將關於您的用戶名和密碼的兩行附加到您的初始化文件中。
有了這個,你就可以編寫 python 代碼了。 一開始,我們將導入一些模塊和函數以防止錯誤。 這些語句可以幫助您實現:
導入操作系統
將 psycopg2 導入為 p
從 psycopg2 導入錯誤
然後,我們將通過加載 query.sql 的內容來實例化連接。 使用 open 和 read 命令打開 SQL 數據庫文件,並使用 connect 函數通過指定數據庫用戶、密碼、主機和端口號來連接 NFL 數據庫。
另請閱讀: GitHub 上的 Python 項目
如何在 Python 中從數據庫中獲取數據?
建立數據庫連接後,您可以繼續執行查詢。 您需要使用稱為“光標”的控制結構。 就像編寫“cursor = conn.cursor()”和隨後的“cursor.execute(query)”一樣簡單。 然後,結果將包含字典格式的元組列表(一個元素)。
結果 = cursor.fetchall()
在此階段,您可以嘗試迭代結果。 您可以根據需要操作內容,將它們插入或輸入到電子表格、HTML 表格等中。完成時不要忘記包裝和清理代碼。 您可以使用 try-except-block 並添加“finally”句子來做到這一點。
當您處理大型數據集、關係或其他數據集時,您會覺得需要一些基本工具來查詢表,尤其是當您還想操作結果時。 用python很容易實現這樣的數據轉換。
因此,大多數研究生課程都將這些技術的知識作為課程的一部分。 一些例子包括數據科學副文憑(IIIT-班加羅爾)和全球商業分析碩士證書(密歇根州立大學)。
結帳: Python 開源項目的想法
結論
在本Python 數據庫教程中,我們學習瞭如何連接關係數據庫、執行查詢和導入結果。 你可以用 python 做更多的事情,並調整你的代碼來做你想做的事情。
我們希望本指南可以幫助您找到一些清晰的信息並激發您的好奇心!
學習世界頂尖大學的數據科學課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
如何使用 Python 請求從 API 中提取數據?
當您希望從 API 接收數據時,您必須從服務器發出請求,就像您與傳統網站交互時一樣。 我們需要使用 requests 包從使用 Python 的 API 獲取數據。 在 Python 中,Requests 是用於發出 HTTP 請求的標準庫。 由於它的抽象,它非常易於使用,尤其是在使用 API 時。
當我們使用 requests 庫運行請求時,我們會得到一個請求對象,其中包含我們要提取的數據以及請求狀態代碼。 狀態碼告知我們請求的狀態,它是我們提出的每個請求的一部分。 根據它們返回的信息,代碼分為數百個不同的值。
如何將 SQLite 與 Python 連接起來?
一種。 我們必須導入 sqlite3 才能使用 SQLite。
灣。 然後,使用 connect 方法建立連接並提供您要訪問的數據庫的名稱; 如果存在具有該名稱的文件,它將被打開。 如果您未指定名稱,Python 將使用提供的名稱創建一個文件。
C。 之後,創建一個可以發送 SQL 命令的游標對象。 游標是一種用於遍歷和檢索數據庫記錄的控制結構。 在處理 Python 時,光標非常重要。 游標對象將用於執行所有命令。
d。 創建一個對象並在其中編寫帶有註釋的 SQL 語句,以在數據庫中創建一個表。 示例: - sql_comm = SQL 語句。
e. 運行命令輕而易舉。 執行游標方法,將 sql 命令的名稱作為參數傳遞。 將命令列表保存為 sql_comm 變量並運行它們。 完成所有任務後,通過提交將修改保存到文件,然後斷開連接。
Python 對數據庫有用嗎?
Python 特別適合結構化表格數據,這些數據可以使用 SQL 獲得,但需要額外的操作,而單獨使用 SQL 很難完成。