成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優秀官配:世界上人們很喜歡的數據庫+很喜歡的語言

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

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)

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

[[330373]]

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

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

pyodbc

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

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

  • IBM Db2
  • MySQL
  • Oracle
  • MS Access
  • MS SQL服務器

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

連接

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

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

 

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

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

 

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

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

執行查詢

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

先來初始化游標:

 

  1. cursor = cnxn.cursor() 

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

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

 

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

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

提取數據

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

 

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

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

在SQL中變更數據

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

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

 

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

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

 

  1. cnxn.commit() 

下一步

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

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

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

 

  1. # imports for SQL data part 
  2.        import pyodbc 
  3.        from datetime import datetime,timedelta 
  4.        import pandas as pd 
  5.              # imports forsending email 
  6.        from email.mime.text importMIMEText 
  7.        fromemail.mime.multipart importMIMEMultipart 
  8.        import smtplib 
  9.              date = datetime.today() -timedelta(days=7)  # get the date 7 days ago 
  10.              date = date.strftime("%Y-%m-%d")  # convert to format yyyy-mm-dd 
  11.              cnxn = pyodbc.connect(cnxn_str)  # initialise connection (assume we havealready defined cnxn_str) 
  12.              # build up ourquery string 
  13.        query = ("SELECT *FROM customers " 
  14.                f"WHERE joinDate > '{date}'"
  15.              # execute thequery and read to a dataframe in Python 
  16.        data = pd.read_sql(query, cnxn) 
  17.              del cnxn  # close the connection 
  18.              # make a fewcalculations 
  19.        mean_payment = data['payment'].mean() 
  20.        std_payment = data['payment'].std() 
  21.              # get maxpayment and product details 
  22.        max_vals = data[['product''payment']].sort_values(by=['payment'], ascending=False).iloc[0] 
  23.              # write an emailmessage 
  24.        txt = (f"Customerreporting for period {date} - {datetime.today().strftime('%Y-%m-%d')}.\n\n" 
  25.              f"Mean payment amounts received: {mean_payment}\n" 
  26.              f"Standard deviation of payment amounts: {std_payments}\n" 
  27.              f"Highest payment amount of {max_vals['payment']} " 
  28.              f"received from {max_vals['product']} product."
  29.              # we will built themessage using the email library and send using smtplib 
  30.        msg =MIMEMultipart() 
  31.        msg['Subject'] ="Automatedcustomer report"  # set emailsubject 
  32.        msg.attach(MIMEText(txt))  # add text contents 
  33.              # we will sendvia outlook, first we initialise connection to mail server 
  34.        smtp = smtplib.SMTP('smtp-mail.outlook.com''587'
  35.        smtp.ehlo()  # say hello to the server 
  36.        smtp.starttls()  # we will communicate using TLSencryption 
  37.                 # login to outlookserver, using generic email and password 
  38.        smtp.login('joebloggs@outlook.com''Password123'
  39.                 # send email to ourboss 
  40.        smtp.sendmail('joebloggs@outlook.com''joebloggsboss@outlook.com', msg.as_string()) 
  41.                 # finally,disconnect from the mail server 
  42.        smtp.quit() 

至此,任務結束!運行此代碼快速提取前一周的數據,計算關鍵指標,并把摘要發送給老板。

通過簡單的步驟,我們了解了如何通過使用SQL和Python的集成來快速建立更高效、自動化的工作流程。不僅僅可以用來做本例中的事,它還有很多用途等你開發。

Python開辟了新路線,完成了以前僅使用SQL無法完成的操作。這對最強官配,實現了1+1大于2的效果。

 

責任編輯:華軒 來源: 讀芯術
相關推薦

2022-04-05 00:18:33

工具終端命令行

2021-12-17 10:58:20

前端開發工具

2020-06-17 10:08:08

編程數據庫開發

2016-12-14 10:00:44

數據結構編譯器

2020-10-23 09:35:41

開源 Java 代碼

2020-07-16 07:47:36

ZooKeeperNettyNIO

2021-12-21 10:35:49

技術資訊

2020-01-13 12:44:47

程序員軟件數據庫

2012-12-10 13:56:20

大數據IT云計算

2012-05-14 08:55:23

Android

2023-06-28 11:14:18

2021-11-08 09:18:01

CAS面試場景

2021-12-25 22:31:10

MarkWord面試synchronize

2020-08-06 15:14:07

D語言編程語言

2010-04-13 14:35:17

2020-07-28 10:45:51

數據庫三范式MySQL

2021-12-16 18:38:13

面試Synchronize

2009-03-09 09:54:37

求職面試招聘官

2022-06-04 15:28:42

微服務架構編程語言

2012-03-30 13:56:17

編程開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看亚洲一区二区 | 自拍偷拍第一页 | 91在线免费视频 | 亚洲 欧美 日韩 在线 | av影音资源 | 久草福利| 日韩国产在线观看 | 久久精品免费观看 | 国产一级片免费在线观看 | 精品免费国产视频 | 色www精品视频在线观看 | 日韩中文一区二区三区 | 日本福利视频免费观看 | 成人精品鲁一区一区二区 | 波霸ol一区二区 | 97久久精品午夜一区二区 | 久久久久久久一区二区三区 | 中文一区二区视频 | 九九国产 | 久久国产精品91 | 久久99精品久久久久久 | 男人的天堂视频网站 | 国产女人与拘做受免费视频 | 国产美女在线看 | 日韩精品极品视频在线观看免费 | av天天看| 国产精品久久久久久模特 | 欧美在线一区二区三区 | 国产在线小视频 | 精品久久久久久久久久久久久久 | 一区二区免费在线观看 | 国产高清在线视频 | 黄色成人在线观看 | 一级毛片色一级 | 午夜视频在线观看网站 | 欧美日韩视频在线播放 | av毛片 | 国产精品一区二区免费 | 精品久久久久久亚洲精品 | 午夜在线视频一区二区三区 | 亚洲人在线观看视频 |