欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python連接SQL?server數(shù)據(jù)庫(kù)并進(jìn)行簡(jiǎn)單查詢的操作詳解

 更新時(shí)間:2024年02月26日 11:50:22   作者:洛水魚  
SQL?Server是微軟推出的重量級(jí)的數(shù)據(jù)庫(kù),本文將給大家詳細(xì)介紹了一下Python連接SQL?server數(shù)據(jù)庫(kù)詳細(xì)流程,并通過(guò)代碼示例給大家講解的非常清除,具有一定的參考價(jià)值,需要的朋友可以參考下

前言

學(xué)習(xí)Python 連接 數(shù)據(jù)庫(kù)

解決問(wèn)題:

1:如何連接數(shù)據(jù)庫(kù)

2:如何進(jìn)行簡(jiǎn)單查詢

3:如何將查詢中的中文亂碼給修復(fù)

4:如何進(jìn)行插入,更新,刪除

一、如何連接數(shù)據(jù)庫(kù)?

#pip install pymssql 先安裝

import pymssql #導(dǎo)入模塊

connect = pymssql.connect('(local)','sa','123456','School')  
#connect = pymssql.connect('服務(wù)器名稱', '用戶名', '密碼', '庫(kù)名')  # 建立連接
if connect:
    print("連接成功")
#輸出
連接成功

二、如何進(jìn)行簡(jiǎn)單查詢

cursor = connect.cursor()#創(chuàng)建一個(gè)游標(biāo)對(duì)象python里的sql語(yǔ)句都要通過(guò)cursor來(lái)執(zhí)行
sql="select * from Student" #一個(gè)簡(jiǎn)單的sql查詢語(yǔ)句
cursor.execute(sql)#執(zhí)行sql語(yǔ)句
row = cursor.fetchone() #用fetchone 獲取游標(biāo)的數(shù)據(jù),如果是首次就定位首行
while row:  # 循環(huán)讀取所有結(jié)果
 	print(row)
    row = cursor.fetchone()#取下一個(gè)內(nèi)容
cursor.close()
connect.close()
#結(jié)果出現(xiàn)亂碼,下面我們解決
<pymssql._pymssql.Connection object at 0x0000025DBDEE9F00>
連接成功
(2021402075, '???×', '?D', datetime.datetime(1900, 2, 7, 0, 0), 'MA')
(2021402076, '???×', '?D', datetime.datetime(2003, 3, 18, 0, 0), 'CS')
(2021402077, '′oò°ó£', '??', datetime.datetime(2009, 4, 20, 0, 0), 'MA')
(2021402078, '′oè?ò°?·', '??', datetime.datetime(2003, 6, 20, 0, 0), 'CS')
(2021402079, 'è??ò3?ì?', '??', datetime.datetime(2006, 7, 7, 0, 0), 'MA')
(2021402080, '?è?à', '??', datetime.datetime(2003, 6, 6, 0, 0), 'CS')

三、如何將查詢中的中文亂碼給修復(fù)

方法一

主要在pymssql.connect 中添加charset = ‘cp936’

原因:因?yàn)樽址侄晤愋蜑椋簐archar,造成讀取數(shù)據(jù)亂碼。

import pymssql #導(dǎo)入模塊
connect = pymssql.connect('(local)','sa','123456','School',charset='cp936')  #connect = pymssql.connect('服務(wù)器名稱', '用戶名', '密碼', '庫(kù)名')  # 建立連接
if connect:
    print(connect)
    print("連接成功")
cursor = connect.cursor()
sql = "select * from Student"
cursor.execute(sql)
row = cursor.fetchone()
while row:
    print(row)
    row = cursor.fetchone()
cursor.close()
connect.close()
#結(jié)果
<pymssql._pymssql.Connection object at 0x00000115E49A9FC0>
連接成功
(2021402075, '蕭炎', '男', datetime.datetime(1900, 2, 7, 0, 0), 'MA')
(2021402076, '蕭炎', '男', datetime.datetime(2003, 3, 18, 0, 0), 'CS')
(2021402077, '春野櫻', '女', datetime.datetime(2009, 4, 20, 0, 0), 'MA')
(2021402078, '春日野穹', '女', datetime.datetime(2003, 6, 20, 0, 0), 'CS')
(2021402079, '日向雛田', '女', datetime.datetime(2006, 7, 7, 0, 0), 'MA')
(2021402080, '娜美', '女', datetime.datetime(2003, 6, 6, 0, 0), 'CS')
#成功完美的查詢

方法一的缺點(diǎn):
如果SQL語(yǔ)句中含有中文,就會(huì)得不到數(shù)據(jù),如sql中有:where table_colum = ‘魏本明’;即便將sql語(yǔ)句:sql.encode(‘cp936’),也不行??!

方法二

更通用全部

直接用sql語(yǔ)句將varchar轉(zhuǎn)為nvarchar類型,不再需要指定charset了,就沒(méi)問(wèn)題了(注意轉(zhuǎn)換列名稱起別名),直接寫sql語(yǔ)句如下

select convert(nvarchar(50),table_colum) 
as 'nvarchar_colum' from mytable where convert(nvarchar(50),table_colum) = '魏本明'
就是將需要轉(zhuǎn)換的列(如,varchar),轉(zhuǎn)換為nvarchar,也可以完成

例如:

import pymssql #導(dǎo)入模塊
connect = pymssql.connect('(local)','sa','123456','School')  #connect = pymssql.connect('服務(wù)器名稱', '用戶名', '密碼', '庫(kù)名')  # 建立連接
if connect:
    print(connect)
    print("連接成功")

cursor = connect.cursor()#創(chuàng)建一個(gè)游標(biāo)對(duì)象python里的sql語(yǔ)句都要通過(guò)cursor來(lái)執(zhí)行
sql="select Ssno,convert(nvarchar(50),Snam) as 'a',convert(nvarchar(50),Ssex) as 'b' from Student"
cursor.execute(sql)#執(zhí)行語(yǔ)句
row = cursor.fetchone()#用fetchone 獲取游標(biāo)的數(shù)據(jù),如果是首次就定位首行
print(row)
while row:  # 循環(huán)讀取所有結(jié)果
    print("id=%s,Name=%s,Sex=%s" % (row[0], row[1], row[2]))  # 輸出結(jié)果
    row = cursor.fetchone()#取下一個(gè)內(nèi)容
cursor.close()
connect.close()
結(jié)果:
<pymssql._pymssql.Connection object at 0x0000019C35BBC0C0>
連接成功
(2021402075, '蕭炎', '男', datetime.datetime(1900, 2, 7, 0, 0), 'MA')
(2021402076, '蕭炎', '男', datetime.datetime(2003, 3, 18, 0, 0), 'CS')
(2021402077, '春野櫻', '女', datetime.datetime(2009, 4, 20, 0, 0), 'MA')
(2021402078, '春日野穹', '女', datetime.datetime(2003, 6, 20, 0, 0), 'CS')
(2021402079, '日向雛田', '女', datetime.datetime(2006, 7, 7, 0, 0), 'MA')
(2021402080, '娜美', '女', datetime.datetime(2003, 6, 6, 0, 0), 'CS')

四、如何進(jìn)行插入,更新,刪除

進(jìn)行更新數(shù)據(jù)的操作都要用到connect.commit()函數(shù)
update,delete,insert等修改表中數(shù)據(jù)的需要commit

commit字面意思就是 投入
然后更改表的結(jié)構(gòu)就不用了,因?yàn)樗麄儍?nèi)置了commit
create,drop,alter等修改表結(jié)構(gòu)的,就不需要commit,因?yàn)閮?nèi)部隱藏了commit

不行的時(shí)候加上conn.autocommit(True)

推薦先在SQL中查看語(yǔ)句有沒(méi)有語(yǔ)法錯(cuò)誤在放回來(lái)運(yùn)行,能解決你50%以上的報(bào)錯(cuò)

總結(jié)

我下面進(jìn)行一個(gè)小項(xiàng)目全部都在python中完成

目標(biāo):

1:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)

2:創(chuàng)建一個(gè)表

3:為這個(gè)表插入數(shù)據(jù)

4:更新插入的數(shù)據(jù)

5:查詢前三行數(shù)據(jù)

6:插入一列屬性

import  pymssql
# 1:創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
conn = pymssql.connect('.','sa','123456')#單純連接數(shù)據(jù)庫(kù)
if conn:
    print("連接成功")
cursor = conn.cursor() #創(chuàng)建執(zhí)行語(yǔ)句
conn.autocommit(True) #創(chuàng)建庫(kù)的核心!!!
sql_DATA ="""
CREATE DATABASE PY_DATA
ON   PRIMARY
 (NAME = 'PY_DATA',
FILENAME = 'D:\DATA\PY_DATA.MDF' ,
SIZE = 5MB,
MAXSIZE = 20MB,
FILEGROWTH = 20%)
LOG ON
(NAME ='PY_DATA_LOG',
FILENAME = 'D:\DATA\PY_DATA_LOG. LDF',
SIZE = 5MB,
MAXSIZE = 10MB,
FILEGROWTH = 2MB)
"""
cursor.execute(sql_DATA)
cursor.close()
conn.autocommit(False)
conn.close()
----------------------------------------------------------------------------
#2:創(chuàng)建一個(gè)表
import pymssql
##連接
conn = pymssql.connect('.','sa','123456','School')
if conn:
    print("連接成功")

##操作
cursor = conn.cursor()
conn.autocommit(True)#是修改表的結(jié)構(gòu)都要有嗎?
sql_TABLE = """
Create Table Student_3(
ID int primary key,
Name varchar(50),
Age int)
"""
cursor.execute(sql_TABLE)
conn.autocommit(False)
conn.close()
----------------------------------------------------------------------------

3:為這個(gè)表插入數(shù)據(jù)
import  pymssql
conn = pymssql.connect('.','sa','123456','PY_DATA')
if conn:
    print("True")

cursor = conn.cursor()
a = "松仁、秉峰、泳紀(jì)海奉、威劍、頌和、祥益、騰恩、柏鑠、孟深、忠莊、軒哲、鎧鑫、仕倫、儒億、積進(jìn)信欽、賢元、程基、安泉、樹昌、祝斌、一科、游湖、普濟(jì)、中堅(jiān)"
a = a.split("、")
for i in range(len(a)):
    sql_insert = f"insert into Student Values({i},'{a[i]}',18)"
    print(sql_insert)
    cursor.execute(sql_insert)
    conn.commit()
cursor.close()
conn.close()
----------------------------------------------------------------------------

4:更新插入的數(shù)據(jù)
import pymssql
conn = pymssql.connect('.','sa','123456','PY_DATA')
if conn:
    print("True")

cursor = conn.cursor()
sql_updata = "update student set Name='消息' where ID = 12"
cursor.execute(sql_updata)
conn.commit()
cursor.close()
conn.close()


----------------------------------------------------------------------------
5:查詢前三行數(shù)據(jù)
import pymssql
conn = pymssql.connect('.','sa','123456','PY_DATA',charset='cp936')
if conn:
    print("True")
cursor = conn.cursor()
sql_select = "Select Top 3 * From Student"
cursor.execute(sql_select)
row =1
while row:
    row = cursor.fetchone()
    print(row)
cursor.close()
conn.close()
----------------------------------------------------------------------------
6:插入一列屬性
import pymssql
conn = pymssql.connect('.','sa','123456','School')
cursor = conn.cursor()
conn.autocommit(True)
sql_insertbase = "Alter table Student_3 add idname int Null"
cursor.execute(sql_insertbase)
cursor.close()
conn.close()

以上就是Python連接SQL server數(shù)據(jù)庫(kù)詳細(xì)流程的詳細(xì)內(nèi)容,更多關(guān)于Python連接SQL server的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python3中http協(xié)議提供文件服務(wù)器功能詳解

    python3中http協(xié)議提供文件服務(wù)器功能詳解

    http協(xié)議是互聯(lián)網(wǎng)的通用基礎(chǔ)協(xié)議,也可以利用其來(lái)開(kāi)發(fā)文件服務(wù)器,給客戶提供文件瀏覽,查看,下載,上傳等功能,這篇文章主要介紹了python3中http協(xié)議提供文件服務(wù)器功能,需要的朋友可以參考下
    2023-06-06
  • 如何從PyTorch中獲取過(guò)程特征圖實(shí)例詳解

    如何從PyTorch中獲取過(guò)程特征圖實(shí)例詳解

    特征提取是圖像處理過(guò)程中常需要用到的一種方法,其效果好壞對(duì)模型的泛化能力有至關(guān)重要的影響,下面這篇文章主要給大家介紹了關(guān)于如何從PyTorch中獲取過(guò)程特征圖的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Python操作word文檔插入圖片和表格的實(shí)例演示

    Python操作word文檔插入圖片和表格的實(shí)例演示

    這篇文章主要給大家介紹了關(guān)于Python操作word文檔插入圖片和表格的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作

    Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作

    這篇文章主要介紹了Keras預(yù)訓(xùn)練的ImageNet模型實(shí)現(xiàn)分類操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Selenium常見(jiàn)異常解析及解決方案示范

    Selenium常見(jiàn)異常解析及解決方案示范

    這篇文章主要介紹了Selenium常見(jiàn)異常解析及解決方案示范,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例

    Python設(shè)計(jì)模式之MVC模式簡(jiǎn)單示例

    這篇文章主要介紹了Python設(shè)計(jì)模式之MVC模式,簡(jiǎn)單介紹了MVC模式的概念、原理,并結(jié)合實(shí)例形式給出了Python實(shí)現(xiàn)與使用MVC模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python設(shè)計(jì)模式中的結(jié)構(gòu)型橋接模式

    Python設(shè)計(jì)模式中的結(jié)構(gòu)型橋接模式

    這篇文章主要介紹了Python設(shè)計(jì)模式中的結(jié)構(gòu)型橋接模式,橋接模式即Bridge?Pattern,將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化.下面來(lái)看看文章的詳細(xì)內(nèi)容介紹吧
    2022-02-02
  • python?nonlocal的用法詳解

    python?nonlocal的用法詳解

    這篇文章主要給大家介紹了關(guān)于python?nonlocal用法的相關(guān)資料,最近在python學(xué)習(xí)中遇到了nonlocal關(guān)鍵字但是感到困惑,于是記錄nonlocal關(guān)鍵字用法,需要的朋友可以參考下
    2023-10-10
  • Python request使用方法及問(wèn)題總結(jié)

    Python request使用方法及問(wèn)題總結(jié)

    這篇文章主要介紹了Python request使用方法及問(wèn)題總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 使用pycharm創(chuàng)建Django項(xiàng)目失敗的解決方案

    使用pycharm創(chuàng)建Django項(xiàng)目失敗的解決方案

    使用PyCharm創(chuàng)建Django項(xiàng)目時(shí)遇到無(wú)法運(yùn)行的問(wèn)題,可以檢查Python的安裝路徑設(shè)置是否正確,在PyCharm的設(shè)置中找到項(xiàng)目解釋器的位置,確保路徑正確,如果不確定Python的安裝位置,可以在命令提示符中使用“where Python”命令查詢
    2024-09-09

最新評(píng)論