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

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

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

前言

學習Python 連接 數(shù)據(jù)庫

解決問題:

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

2:如何進行簡單查詢

3:如何將查詢中的中文亂碼給修復

4:如何進行插入,更新,刪除

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

#pip install pymssql 先安裝

import pymssql #導入模塊

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

二、如何進行簡單查詢

cursor = connect.cursor()#創(chuàng)建一個游標對象python里的sql語句都要通過cursor來執(zhí)行
sql="select * from Student" #一個簡單的sql查詢語句
cursor.execute(sql)#執(zhí)行sql語句
row = cursor.fetchone() #用fetchone 獲取游標的數(shù)據(jù),如果是首次就定位首行
while row:  # 循環(huán)讀取所有結(jié)果
 	print(row)
    row = cursor.fetchone()#取下一個內(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')

三、如何將查詢中的中文亂碼給修復

方法一

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

原因:因為字符串字段類型為:varchar,造成讀取數(shù)據(jù)亂碼。

import pymssql #導入模塊
connect = pymssql.connect('(local)','sa','123456','School',charset='cp936')  #connect = pymssql.connect('服務(wù)器名稱', '用戶名', '密碼', '庫名')  # 建立連接
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')
#成功完美的查詢

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

方法二

更通用全部

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

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 #導入模塊
connect = pymssql.connect('(local)','sa','123456','School')  #connect = pymssql.connect('服務(wù)器名稱', '用戶名', '密碼', '庫名')  # 建立連接
if connect:
    print(connect)
    print("連接成功")

cursor = connect.cursor()#創(chuàng)建一個游標對象python里的sql語句都要通過cursor來執(zhí)行
sql="select Ssno,convert(nvarchar(50),Snam) as 'a',convert(nvarchar(50),Ssex) as 'b' from Student"
cursor.execute(sql)#執(zhí)行語句
row = cursor.fetchone()#用fetchone 獲取游標的數(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()#取下一個內(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')

四、如何進行插入,更新,刪除

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

commit字面意思就是 投入
然后更改表的結(jié)構(gòu)就不用了,因為他們內(nèi)置了commit
create,drop,alter等修改表結(jié)構(gòu)的,就不需要commit,因為內(nèi)部隱藏了commit

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

推薦先在SQL中查看語句有沒有語法錯誤在放回來運行,能解決你50%以上的報錯

總結(jié)

我下面進行一個小項目全部都在python中完成

目標:

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

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

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

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

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

6:插入一列屬性

import  pymssql
# 1:創(chuàng)建一個數(shù)據(jù)庫
conn = pymssql.connect('.','sa','123456')#單純連接數(shù)據(jù)庫
if conn:
    print("連接成功")
cursor = conn.cursor() #創(chuàng)建執(zhí)行語句
conn.autocommit(True) #創(chuàng)建庫的核心!!!
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)建一個表
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:為這個表插入數(shù)據(jù)
import  pymssql
conn = pymssql.connect('.','sa','123456','PY_DATA')
if conn:
    print("True")

cursor = conn.cursor()
a = "松仁、秉峰、泳紀海奉、威劍、頌和、祥益、騰恩、柏鑠、孟深、忠莊、軒哲、鎧鑫、仕倫、儒億、積進信欽、賢元、程基、安泉、樹昌、祝斌、一科、游湖、普濟、中堅"
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ù)庫詳細流程的詳細內(nèi)容,更多關(guān)于Python連接SQL server的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

    python游戲的魅力之冒險島實戰(zhàn)項目

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

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

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

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

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

    python繪制簡單折線圖代碼示例

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

    python中SchedulerManager使用踩坑

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

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

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

    wxPython的安裝圖文教程(Windows)

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

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

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

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

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

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

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

最新評論

会同县| 高邮市| 宣恩县| 阿尔山市| 襄汾县| 郴州市| 勐海县| 青州市| 宜兰县| 沅江市| 恩施市| 万盛区| 西乡县| 台北县| 锦屏县| 耒阳市| 南川市| 临澧县| 周宁县| 达拉特旗| 锡林浩特市| 宜君县| 阳山县| 新昌县| 梅河口市| 垣曲县| 榆中县| 巫溪县| 嫩江县| 云林县| 阳山县| 马公市| 临沭县| 贵州省| 新野县| 麦盖提县| 固原市| 四川省| 阿克苏市| 静安区| 周宁县|