最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2024年02月26日 11:50:22   作者:洛水魚(yú)  
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)單查詢(xún)

3:如何將查詢(xún)中的中文亂碼給修復(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ù)器名稱(chēng)', '用戶(hù)名', '密碼', '庫(kù)名')  # 建立連接
if connect:
    print("連接成功")
#輸出
連接成功

二、如何進(jìn)行簡(jiǎn)單查詢(xú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查詢(xún)語(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')

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

方法一

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

原因:因?yàn)樽址侄晤?lèi)型為:varchar,造成讀取數(shù)據(jù)亂碼。

import pymssql #導(dǎo)入模塊
connect = pymssql.connect('(local)','sa','123456','School',charset='cp936')  #connect = pymssql.connect('服務(wù)器名稱(chēng)', '用戶(hù)名', '密碼', '庫(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')
#成功完美的查詢(xún)

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

方法二

更通用全部

直接用sql語(yǔ)句將varchar轉(zhuǎn)為nvarchar類(lèi)型,不再需要指定charset了,就沒(méi)問(wèn)題了(注意轉(zhuǎn)換列名稱(chēng)起別名),直接寫(xiě)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ù)器名稱(chēng)', '用戶(hù)名', '密碼', '庫(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:查詢(xún)前三行數(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)信欽、賢元、程基、安泉、樹(shù)昌、祝斌、一科、游湖、普濟(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:查詢(xún)前三行數(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)文章

  • python游戲的魅力之冒險(xiǎn)島實(shí)戰(zhàn)項(xiàng)目

    python游戲的魅力之冒險(xiǎn)島實(shí)戰(zhàn)項(xiàng)目

    我看了一眼沉迷《夢(mèng)幻國(guó)度》的兒子!氣就不打一處來(lái)!讓你見(jiàn)識(shí)一下Python游戲的魅力,python實(shí)戰(zhàn)冒險(xiǎn)島游戲碼起,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值
    2021-09-09
  • 深入講解Python中的迭代器和生成器

    深入講解Python中的迭代器和生成器

    這篇文章主要介紹了Python中的迭代器和生成器,涉及到Python中很多重要的特性,需要的朋友可以參考下
    2015-10-10
  • Python實(shí)現(xiàn)加載及解析properties配置文件的方法

    Python實(shí)現(xiàn)加載及解析properties配置文件的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)加載及解析properties配置文件的方法,結(jié)合實(shí)例形式分析了Python針對(duì)properties配置文件的加載、讀取及解析相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • python繪制簡(jiǎn)單折線(xiàn)圖代碼示例

    python繪制簡(jiǎn)單折線(xiàn)圖代碼示例

    這篇文章主要介紹了python繪制簡(jiǎn)單折線(xiàn)圖代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python中SchedulerManager使用踩坑

    python中SchedulerManager使用踩坑

    本文主要介紹了python中SchedulerManager使用踩坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • Pycharm基本操作及調(diào)試代碼

    Pycharm基本操作及調(diào)試代碼

    最近天氣狂熱暴躁,很難靜下心來(lái)學(xué)習(xí)啦,于是給大家整理一些python開(kāi)發(fā)工具pycharm基本操作及調(diào)試代碼吧,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • wxPython的安裝圖文教程(Windows)

    wxPython的安裝圖文教程(Windows)

    下面小編就為大家分享一篇wxPython的安裝圖文教程(Windows),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Python實(shí)現(xiàn)提取Word文檔中的文本和圖片

    Python實(shí)現(xiàn)提取Word文檔中的文本和圖片

    將內(nèi)容從?Word?文檔中提取出來(lái)可以方便我們對(duì)其進(jìn)行其他操作,如將內(nèi)容儲(chǔ)存在數(shù)據(jù)庫(kù)中,本文將介紹如何使用簡(jiǎn)單的代碼實(shí)現(xiàn)從?Word?文檔中提取文本和圖片內(nèi)容并保存,需要的可以參考下
    2023-12-12
  • Flask如何結(jié)合Jinja2模板引擎返回渲染后HTML

    Flask如何結(jié)合Jinja2模板引擎返回渲染后HTML

    在 Flask 中結(jié)合 Jinja2 模板引擎返回渲染后的 HTML 是核心功能之一,本文主要介紹了詳細(xì)實(shí)現(xiàn)方法和最佳實(shí)踐,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-06-06
  • 關(guān)于keras中keras.layers.merge的用法說(shuō)明

    關(guān)于keras中keras.layers.merge的用法說(shuō)明

    這篇文章主要介紹了關(guān)于keras中keras.layers.merge的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05

最新評(píng)論

壤塘县| 吉隆县| 易门县| 宁武县| 青冈县| 桓台县| 大冶市| 宜兰市| 延安市| 元氏县| 尼玛县| 特克斯县| 赣榆县| 松滋市| 垣曲县| 安康市| 吉林市| 黔西县| 安徽省| 天镇县| 江油市| 沈丘县| 明水县| 长宁县| 行唐县| 孝感市| 康保县| 林周县| 十堰市| 贵阳市| 西贡区| 镇赉县| 永城市| 读书| 和林格尔县| 蒙阴县| 棋牌| 连江县| 北辰区| 太仆寺旗| 宜都市|