久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何通過SQL和Python的集成來快速建立工作流程

137次閱讀
沒有評論

共計 4179 個字符,預計需要花費 11 分鐘才能閱讀完成。

本篇內容主要講解“如何通過 SQL 和 Python 的集成來快速建立工作流程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“如何通過 SQL 和 Python 的集成來快速建立工作流程”吧!

幾乎每個人都在使用 SQL 和 Python,Python 是用于數據分析、機器學習和網頁開發的全明星優秀語言,而 SQL 是數據庫的實際標準。如果將兩者結合會發生什么呢?

實際上,兩者要結合在一起并不難。我們可以快速利用 Python 的動態特性,控制和構建 SQL 查詢。設置完成后,我們無需執行任何操作。

這兩種工具結合之后可謂是最強搭檔,自動化和效率都達到了新高度。

pyodbc

連接兩種技術的橋梁是 pyodbc,該庫可以輕松訪問 ODBC 數據庫。

ODBC(開放數據庫連接的簡稱)是一種用于訪問數據庫的標準化應用程序編程接口 (API),由 90 年代初的 SQLAccess 組開發。兼容的數據庫管理系統(DBMS) 包括:

IBM Db2

MySQL

Oracle

MS Access

MS SQL 服務器

在多數情況下,該服務器可以直接轉移,與任何符合 ODBC 的數據庫都可一起使用。唯一需要更改的是連接設置。

連接

首先,要創建與 SQL   服務器的連接,可以通過 pyodbc.connect 實現。在此函數中,還須傳遞連接字符串。此連接字符串必須指定 DBMS 驅動程序、服務器、要連接的特定數據庫以及連接設置。

因此,假設要連接到服務器 UKXXX00123,45600 和數據庫 DB01,需要使用 SQL Server Native Client  11.0。從內部連接使得連接被信任,無需輸入用戶名和密碼。

cnxn_str = (Driver={SQLServer Native Client 11.0};   Server=UKXXX00123,45600;   Database=DB01;   Trusted_Connection=yes; )  現在,連接已初始化為: cnxn = pyodbc.connect(cnxn_str)

如果不通過受信任的連接訪問數據庫,則需要輸入通常用于通過 SQLServer Management  Studio(SSMS)訪問服務器的用戶名和密碼。例如,如果用戶名是 JoeBloggs,而密碼是 Password123,則應立即更改密碼。更改密碼之前,可以按照如下進行連接:

cnxn_str = (Driver={SQLServer Native Client 11.0};   Server=UKXXX00123,45600;   Database=DB01;   UID=JoeBloggs;   PWD=Password123; )cnxn = pyodbc.connect(cnxn_str)

現在我們已連接到數據庫,可以開始通過 Python 執行 SQL 查詢。

執行查詢

SQL 服務器上運行的每個查詢都包含游標初始化和查詢執行。如果要在服務器內部進行任何更改,還需要將這些更改提交到服務器。

先來初始化游標:

cursor = cnxn.cursor()

現在,每當要執行查詢時,都要使用此游標對象。

從名為“customers”表中選擇前 1000 行:

cursor.execute(SELECTTOP(1000) * FROM customers )

執行該操作,但這發生在服務器內部,實際上什么也沒有返回到 Python。讓我們一起看看從 SQL 中提取的這些數據。

提取數據

要從 SQL 中提取數據到 Python 中,需要使用 pandas。Pandas 提供了一個非常方便的函數 read_sql,該函數可以從 SQL 讀取數據。read_sql 需要查詢和連接實例 cnxn,如下所示:

data =pd.read_sql(SELECT TOP(1000) * FROM customers , cnxn)

這會返回到包含“customers”表中前 1000 行的數據框。

在 SQL 中變更數據

現在,如果要變更 SQL 中的數據,需要在原始的初始化連接后添加另一步,執行查詢過程。在 SQL 中執行查詢時,這些變更將保存在臨時存在的空格中,而不是直接對數據進行更改。

為了讓變更永久生效,必須提交變更。連接 firstName 和 lastName 列,創建 fullName 列。

cursor = cnxn.cursor()# firstalter the table, adding a column cursor.execute(ALTER TABLE customer   +  ADD fullNameVARCHAR(20) )# now update that column to contain firstName + lastNamecursor.execute(UPDATEcustomer   +  SET fullName = firstName +     + lastName)

此時,fullName 并不存在于數據庫中。必須提交這些變更,讓變更永久生效:

cnxn.commit()

下一步

一旦執行了需要執行的任何操作任務,就可以把數據提取到 Python 中,也可以將數據提取到 Python 中,在 Python 中進行操作。

無論采用哪種方法,一旦 Python 中有了數據,就可以做很多以前無法做到的事情。

也許需要執行一些日常報告,通常使用這些報告查詢 SQL 服務器中的最新數據,計算基本統計信息,然后通過電子郵件發送結果。如何自動化這一過程呢?

# imports for SQL data part import pyodbc from datetime import datetime,timedelta import pandas as pd # imports forsending email from email.mime.text importMIMEText fromemail.mime.multipart importMIMEMultipart import smtplib date = datetime.today() -timedelta(days=7) # get the date 7 days ago date = date.strftime(%Y-%m-%d) # convert to format yyyy-mm-dd cnxn = pyodbc.connect(cnxn_str) # initialise connection (assume we havealready defined cnxn_str) # build up ourquery string query = (SELECT *FROM customers   f WHERE joinDate    {date} ) # execute thequery and read to a dataframe in Python data = pd.read_sql(query, cnxn) del cnxn # close the connection # make a fewcalculations mean_payment = data[payment].mean() std_payment = data[ payment].std() # get maxpayment and product details max_vals = data[[ product ,  payment]].sort_values(by=[ payment], ascending=False).iloc[0] # write an emailmessage txt = (f Customerreporting for period {date} - {datetime.today().strftime(%Y-%m-%d)}.\n\n  f Mean payment amounts received: {mean_payment}\n  f Standard deviation of payment amounts: {std_payments}\n  f Highest payment amount of {max_vals[ payment]}   f received from {max_vals[ product]} product. ) # we will built themessage using the email library and send using smtplib msg =MIMEMultipart() msg[ Subject] = Automatedcustomer report  # set emailsubject msg.attach(MIMEText(txt)) # add text contents # we will sendvia outlook, first we initialise connection to mail server smtp = smtplib.SMTP(smtp-mail.outlook.com ,  587) smtp.ehlo() # say hello to the server smtp.starttls() # we will communicate using TLSencryption # login to outlookserver, using generic email and password smtp.login(joebloggs@outlook.com ,  Password123) # send email to ourboss smtp.sendmail(joebloggs@outlook.com ,  joebloggsboss@outlook.com , msg.as_string()) # finally,disconnect from the mail server smtp.quit()

到此,相信大家對“如何通過 SQL 和 Python 的集成來快速建立工作流程”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計4179字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 通化县| 临沭县| 漠河县| 绥化市| 名山县| 麦盖提县| 鸡泽县| 长宁县| 威海市| 博客| 瑞丽市| 方正县| 安宁市| 涞源县| 扶风县| 栾川县| 绵阳市| 吉木萨尔县| 大姚县| 绩溪县| 清远市| 巴塘县| 甘德县| 大港区| 股票| 巴林左旗| 金乡县| 万载县| 霞浦县| 沂源县| 分宜县| 天台县| 佛教| 望谟县| 惠安县| 伽师县| 清丰县| 红桥区| 仙桃市| 乌苏市| 长沙县|