Python使用pymssql連接SQL?SEVER數(shù)據(jù)庫(kù)全流程
背景介紹
在數(shù)據(jù)分析領(lǐng)域,經(jīng)常需要從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)進(jìn)行分析和處理。而SQL Server是一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),因此學(xué)習(xí)如何使用Python連接SQL Server數(shù)據(jù)庫(kù)并獲取數(shù)據(jù)是非常有用的。
以下是Python使用pymssql連接SQL Server數(shù)據(jù)庫(kù)的全流程:
- 安裝pymssql庫(kù)
- 本地賬號(hào)設(shè)置
- 腳本連接
- 數(shù)據(jù)導(dǎo)入函數(shù)實(shí)現(xiàn)
一、安裝pymssql
pymssql是Python連接SQL Server數(shù)據(jù)庫(kù)的一個(gè)庫(kù),可以通過(guò)pip命令進(jìn)行安裝。在命令行中輸入以下命令即可安裝:
pip install pymssql
二、本地賬號(hào)設(shè)置
1、設(shè)置sa賬戶的登錄密碼
在SQL Server Management Studio中,展開“安全性”文件夾,右鍵單擊“登錄名”并選擇“新建登錄名”。在彈出的對(duì)話框中,輸入登錄名“sa”,選擇“SQL Server身份驗(yàn)證”,設(shè)置密碼并確保“登錄”選項(xiàng)卡下“默認(rèn)數(shù)據(jù)庫(kù)”為目標(biāo)數(shù)據(jù)庫(kù)。最后,在“狀態(tài)”選項(xiàng)卡下選擇“啟用”并確保“允許連接”復(fù)選框被選中。
2、開啟雙重驗(yàn)證
在SQL Server Management Studio中,右鍵單擊SQL Server實(shí)例名稱并選擇“屬性”。在彈出的對(duì)話框中,選擇“安全性”選項(xiàng)卡,將“身份驗(yàn)證”設(shè)置為“SQL Server和Windows身份驗(yàn)證模式”,并選擇“應(yīng)用”以保存更改。
3、開啟TCP/IP本地服務(wù)
在SQL Server Configuration Manager中,展開“SQL Server網(wǎng)絡(luò)配置”文件夾,右鍵單擊“協(xié)議”文件夾并選擇“新建協(xié)議”。選擇“TCP/IP”協(xié)議,右鍵單擊“TCP/IP”協(xié)議并選擇“屬性”。在彈出的對(duì)話框中,將“啟用”設(shè)置為“是”,并確保“IP地址”選項(xiàng)卡下的“TCP動(dòng)態(tài)端口”為空。然后,切換到“IPALL”選項(xiàng)卡,并將“TCP端口”設(shè)置為1433(或其他您想要的端口號(hào))。保存更改并重啟SQL Server服務(wù)。
完成以上步驟后,即可使用Python連接本地SQL Server數(shù)據(jù)庫(kù)。
三、腳本連接
做好以上的準(zhǔn)備工作,用測(cè)試腳本連接(如果連接出錯(cuò)——b’DB-Lib error message 20002,試下在connect函數(shù)參數(shù)最后面加上tds_version=“7.0” 或者其他值)。
import pymssql server = '(local)' database = '訂單信息' username = 'sa' password = '123456' # 連接到數(shù)據(jù)庫(kù) conn = pymssql.connect(server=server, user=username, password=password, database=database,tds_version="7.0")#最后一個(gè)參數(shù)不是必須的 # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() print('連接成功!') # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close()
四、數(shù)據(jù)導(dǎo)入函數(shù)
我們成功連接了數(shù)據(jù)庫(kù)以后,可以很方便的導(dǎo)出導(dǎo)入數(shù)據(jù),以下是一個(gè)將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)的函數(shù)實(shí)現(xiàn)
#coding=utf-8 import time import pymssql import pandas as pd def insert_data_to_sql(df, server, database, username, password, table_name,mode='Overlay'): # 連接到數(shù)據(jù)庫(kù) conn = pymssql.connect(server=server, user=username, password=password, database=database) # 創(chuàng)建游標(biāo)對(duì)象 cursor = conn.cursor() # 獲取 DataFrame 對(duì)象的字段名和數(shù)據(jù)類型 columns = list(df.columns) dtypes = df.dtypes if mode=='Overlay': try: #覆蓋模式 cursor.execute("DROP TABLE {}".format(table_name)) except: print('表不存在,直接創(chuàng)建……') # 構(gòu)造創(chuàng)建表的 SQL 語(yǔ)句 create_table_sql = f'CREATE TABLE [{table_name}] (' for col_name, col_type in zip(columns, dtypes): if col_type == 'int64': create_table_sql += f'[{col_name}] BIGINT,' elif col_type == 'float64': create_table_sql += f'[{col_name}] FLOAT,' elif col_type== 'datetime64[ns]' or '時(shí)間' in col_name or '日期' in col_name: create_table_sql += f'[{col_name}] DATETIME2(0),' elif col_type == 'date': create_table_sql += f'[{col_name}] DATE,' else: create_table_sql += f'[{col_name}] NVARCHAR(max),' create_table_sql = create_table_sql.rstrip(',') + ');' cursor.execute(create_table_sql) # 將 DataFrame 轉(zhuǎn)換成元組列表 data = [tuple(row) for row in df.fillna(0).values.tolist()] # 構(gòu)造插入數(shù)據(jù)的 SQL 語(yǔ)句 insert_sql = f'INSERT INTO [{table_name}] (' insert_sql += ','.join([f'[{col_name}]' for col_name in columns]) + ') VALUES (' insert_sql += ','.join(['%s'] * len(columns)) + ');' # 將數(shù)據(jù)插入到數(shù)據(jù)庫(kù) cursor.executemany(insert_sql, data) # 提交事務(wù) conn.commit() # 關(guān)閉數(shù)據(jù)庫(kù)連接 conn.close() # 數(shù)據(jù)庫(kù)連接參數(shù)
總結(jié)
到此這篇關(guān)于Python使用pymssql連接SQL SEVER數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Python連接SQLSEVER數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于python實(shí)現(xiàn)銀行管理系統(tǒng)
這篇文章主要介紹了基于python實(shí)現(xiàn)銀行管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python項(xiàng)目制作的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04python?pygame實(shí)現(xiàn)控制物體移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python?pygame控制物體移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01用Python生成N層的楊輝三角的實(shí)現(xiàn)方法
這篇文章主要介紹了用Python生成N層的楊輝三角的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04python實(shí)現(xiàn)多人聊天服務(wù)器以及客戶端
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)多人聊天服務(wù)器以及客戶端,帶圖形化界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07Python搭建自己IP代理池的方法實(shí)現(xiàn)
本文主要介紹了Python搭建自己IP代理池的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02