如何使用Pycharm連接SQL?Sever(詳細(xì)教程)
如何使用pycharm連接SQL Sever:
應(yīng)該是所有的錯(cuò)誤都經(jīng)歷了(不得不說(shuō)挺崩潰的)
Tip:不要跳步操作。
步驟一:先檢測(cè)自己的SQL Sever有沒(méi)有打開(kāi)密碼功能
如果沒(méi)有打開(kāi)密碼功能僅新建登錄名會(huì)出現(xiàn):
標(biāo)題: 連接到服務(wù)器 ------------------------------ 無(wú)法連接到 LAPTOP-40O6HVDS。 ------------------------------ 其他信息: 已成功與服務(wù)器建立連接,但是在登錄過(guò)程中發(fā)生錯(cuò)誤。 (provider: Shared Memory Provider, error: 0 - 管道的另一端上無(wú)任何進(jìn)程。) (Microsoft SQL Server,錯(cuò)誤: 233)
打開(kāi)密碼功能具體實(shí)現(xiàn)操作如下:

我的SQL Sever下載的時(shí)候就是用的電腦身份驗(yàn)證登錄的,需要設(shè)置密碼登錄:
找到對(duì)象資源管理器的第一個(gè),單擊鼠標(biāo)右鍵后出現(xiàn)以下頁(yè)面:

點(diǎn)擊屬性,進(jìn)入頁(yè)面后點(diǎn)擊安全性,會(huì)出現(xiàn):

服務(wù)器身份驗(yàn)證選中第二個(gè)(SQL Sever 和Window 身份驗(yàn)證)模式之后點(diǎn)擊確定。
步驟二:建立一個(gè)空數(shù)據(jù)庫(kù),并且建立一個(gè)專屬用戶
建立專屬用戶和空數(shù)據(jù)庫(kù)的原因是防止以后對(duì)數(shù)據(jù)庫(kù)操作失誤時(shí)影響到其它的數(shù)據(jù)庫(kù)。
首先需要點(diǎn)擊新建查詢并且執(zhí)行以下操作:
create database soft2104
執(zhí)行會(huì)出現(xiàn)一個(gè)soft2104的新數(shù)據(jù)庫(kù)(soft2104我的數(shù)據(jù)庫(kù)名稱,后續(xù)需要放在pycharm里)
如果你覺(jué)得數(shù)據(jù)庫(kù)難聽(tīng)可以執(zhí)行如下操作進(jìn)行刪除數(shù)據(jù)庫(kù):(不過(guò)需要新建一個(gè)數(shù)據(jù)庫(kù))
use master --刪數(shù)據(jù)庫(kù) drop database soft2104 --刪數(shù)據(jù)庫(kù)
建立好數(shù)據(jù)庫(kù)后雙擊安全性:

雙擊登錄名后點(diǎn)擊鼠標(biāo)右鍵,點(diǎn)擊新建登錄名:

編輯一個(gè)登錄名(yunmengze這個(gè)是我的用戶名,后續(xù)需要放在pycharm里)

接下來(lái)點(diǎn)擊SQL Sever 身份驗(yàn)證輸入密碼,隨便起一個(gè)密碼,忘了可以再更改。在這里我就用123456代替(123456是我的密碼,后續(xù)需要放在pycharm里)。
接下來(lái)把強(qiáng)制實(shí)施密碼策略的對(duì)號(hào)給點(diǎn)掉(不然后來(lái)會(huì)遇到各種登錄問(wèn)題)

變成這樣:

點(diǎn)擊用戶映射,將你的數(shù)據(jù)庫(kù)打勾:

將下邊的db_ower對(duì)勾選中:

點(diǎn)擊確定,之后進(jìn)行驗(yàn)證:

點(diǎn)擊電腦和叉的標(biāo)志退出服務(wù)器斷開(kāi)連接,之后點(diǎn)擊電腦和綠線的標(biāo)志連接服務(wù)器

點(diǎn)擊SQL Sever 身份驗(yàn)證輸入賬號(hào)密碼如果成功的連接,就會(huì)進(jìn)入數(shù)據(jù)庫(kù),你只能對(duì)你用戶對(duì)應(yīng)下的數(shù)據(jù)庫(kù)進(jìn)行各種操作:

如果你的SQL Sever沒(méi)有打開(kāi)密碼功能就會(huì)出現(xiàn)以下提示:
標(biāo)題: 連接到服務(wù)器 ------------------------------ 無(wú)法連接到 LAPTOP-40O6HVDS。 ------------------------------ 其他信息: 已成功與服務(wù)器建立連接,但是在登錄過(guò)程中發(fā)生錯(cuò)誤。 (provider: Shared Memory Provider, error: 0 - 管道的另一端上無(wú)任何進(jìn)程。) (Microsoft SQL Server,錯(cuò)誤: 233)
步驟三:打開(kāi)1433 端口
首先需要檢測(cè)自身的 1433 端口是否打開(kāi)(一般默認(rèn)的都是關(guān)閉的需要自己打開(kāi))
1433應(yīng)該是電腦的一個(gè)端口,可以鏈接電腦的(其實(shí)不需要知道是什么)
點(diǎn)擊:win和R,輸入cmd點(diǎn)擊回車出現(xiàn)如下界面:

輸入telnet localhost 1433并點(diǎn)擊回車
一般會(huì)出現(xiàn)一下錯(cuò)誤:
'telnet' 不是內(nèi)部或外部命令,也不是可運(yùn)行的程序
解決辦法:
點(diǎn)擊:win和R,輸入control點(diǎn)擊回車出現(xiàn)如下界面:

點(diǎn)擊程序(不要點(diǎn)到卸載程序)

點(diǎn)擊啟動(dòng)或關(guān)閉Windows 功能

將Telnet客戶端對(duì)號(hào)選中,點(diǎn)擊確定,會(huì)經(jīng)過(guò)大概1分鐘左右的等待頁(yè)面
再次重復(fù)win和R,輸入cmd點(diǎn)擊,輸入telnet localhost 1433并點(diǎn)擊回車出現(xiàn)以下錯(cuò)誤:
正在連接localhost...無(wú)法打開(kāi)到主機(jī)的連接。 在端口 1433: 連接失敗
(你已經(jīng)成功了一半了)
打開(kāi)以下程序:

找不到就在搜索框里輸入sql

打開(kāi)之后會(huì)出現(xiàn)以下界面:

禁用所有上述出現(xiàn)的程序(必須先這么做)
點(diǎn)擊SQL Sever網(wǎng)絡(luò)配置,然后點(diǎn)擊MSSQLSEVER的協(xié)議:

雙擊這個(gè)TCP/IP,進(jìn)入之后將TCP/IP的啟用改為 是


點(diǎn)擊IP地址:

將IP1、IP2的啟用改為是,觀察TCP端口是不是1433。(一共改兩個(gè))

往下滑出現(xiàn)IPAll,觀察其TCP端口是不是1433,最后別忘記點(diǎn)應(yīng)用(不是點(diǎn)擊確定)。

經(jīng)過(guò)上述操作后重啟電腦,重新打開(kāi)該軟件,然后再將下邊的東西改成啟動(dòng),SQL Sever代理啟動(dòng)失敗與否不會(huì)影響SQL Sever的使用。:

點(diǎn)擊:win和R,輸入cmd點(diǎn)擊回車,并在其中輸入telnet localhost 1433 當(dāng)頁(yè)面跳轉(zhuǎn)到以下頁(yè)面則說(shuō)明你的1433配置成功:

步驟四:在pycharm中測(cè)試
經(jīng)過(guò)以上操作之后打開(kāi)pycharm在終端輸入,安裝pycharm和SQL Sever鏈接的庫(kù):
pip install pymssql
pymssql庫(kù)安裝成功后建立新的py文件并輸入以下代碼并執(zhí)行:
import pymssql connect = pymssql.connect(host='localhost',server='LAPTOP-40O6HVDS', port='1433',user='yunmengze', password= '123456', database='soft2104') # host不要改其參數(shù),server改成你的服務(wù)器名, port不要改其參數(shù),user你的用戶名, password你的密碼, database你的數(shù)據(jù)庫(kù)名 if connect:
'yunmengze', '123456', 'soft2104'是上述步驟二操作中設(shè)置的。
LAPTOP-40O6HVDS是我的服務(wù)器名稱,在這里你需要打開(kāi)你的SQL Sever登錄界面進(jìn)行查看。

如果上述的,代碼執(zhí)行失敗,失敗示例如下(服務(wù)器名字是漢語(yǔ)的):

請(qǐng)用以下代碼調(diào)試,如果這樣能夠連接成功請(qǐng)利用步驟五修改服務(wù)器名稱:
import pymssql
connect = pymssql.connect(host='localhost',server='LAPTOP-40O6HVDS', port='1433',user='yunmengze', password= '123456', database='soft2104',charset="GBK")
# host不要改其參數(shù),server改成你的服務(wù)器名, port不要改其參數(shù),user你的用戶名, password你的密碼, database你的數(shù)據(jù)庫(kù)名,charset不要改變其參數(shù)。
if connect:
print("數(shù)據(jù)庫(kù)連接成功")
else:
print("連接失敗")如果你的運(yùn)行結(jié)果是:數(shù)據(jù)庫(kù)連接成功
恭喜你的pycharm和SQL Sever鏈接成功。
(剩下的就是學(xué)習(xí)如何以pycharm為媒介來(lái)操作SQL Sever了)
SQL Sever在pycharm中的導(dǎo)入數(shù)據(jù)需要修改用戶權(quán)限,如果你經(jīng)過(guò)一番波折連接成功建議您往下看……
步驟五:服務(wù)器含有漢語(yǔ)的亂碼錯(cuò)誤修正
下面根據(jù)我經(jīng)歷的一下問(wèn)題做一些補(bǔ)充:
如果你的服務(wù)器沒(méi)有漢語(yǔ)請(qǐng)?zhí)^(guò)該步驟。
如果你的服務(wù)器是漢語(yǔ)的,登錄的時(shí)候需要charset="GBK",但是對(duì)后續(xù)的在數(shù)據(jù)增加時(shí)會(huì)因?yàn)镚BK有亂碼的風(fēng)險(xiǎn),需要做下列一下修改:

點(diǎn)擊此電腦的屬性

進(jìn)入后點(diǎn)擊重命名這臺(tái)電腦
重命名后重啟電腦(為了教程我也是重命名了,………………)
重啟電腦后再打開(kāi)sql sever點(diǎn)擊服務(wù)器,就可以對(duì)服務(wù)器進(jìn)行選擇,選擇你命名的電腦名稱的服務(wù)器,嘗試一下就會(huì)發(fā)現(xiàn)也可以進(jìn)入。
下面教程一種更改服務(wù)器名稱在pycharm來(lái)隱藏真實(shí)的服務(wù)器名稱的方法:
修改服務(wù)器的名稱(相當(dāng)于加一個(gè)小名),下列操作是在sql sever里新建查詢中執(zhí)行的,需要根據(jù)提示修改其中的oldservername和newservername:
/*
select @@SERVERNAME
--查詢當(dāng)前服務(wù)器實(shí)際名稱,在后續(xù)操作過(guò)程中不會(huì)影響該值,服務(wù)器的大名
select SERVERPROPERTY('ServerName')
--查看所有定義的服務(wù)器
*/
sp_helpserver --可以查看服務(wù)器的小名
--根據(jù)查出的小名進(jìn)行修改oldservername的值
sp_dropserver 'oldservername'
--newservername是更改后的名稱
sp_addserver 'newservername','local'
--將更改后的名稱應(yīng)用newservername是你需要改的
sp_serveroption 'newservername', 'data access', 'on'
--oldservername原來(lái)的服務(wù)器名,newservername新的服務(wù)器名修改后,用新的服務(wù)器名稱也能進(jìn)入服務(wù)器,注意不要有漢語(yǔ)
實(shí)際服務(wù)器如果有漢語(yǔ)請(qǐng)通過(guò)上一個(gè)方法修改服務(wù)器名稱先對(duì)真實(shí)服務(wù)器名稱修改,增加昵稱的方式不會(huì)更改原來(lái)服務(wù)器中包含漢語(yǔ)使服務(wù)器無(wú)法進(jìn)入或亂碼的錯(cuò)誤。
SQL Sever在pycharm中的導(dǎo)入數(shù)據(jù),增,刪,查操作
如果你想大量導(dǎo)入數(shù)據(jù)(導(dǎo)入數(shù)據(jù)前需要在sql sever里建立好表格),使用bulk函數(shù),例如:
bulk insert soft2110 --txt插入到soft2110表格中 from 'd:2104.txt' --txt在D盤(pán)而且需要其編碼為ANSI才行 with(fieldterminator = '\t',rowterminator = '\n') --\t是每行以空格分割,\n是根據(jù)換行將表格導(dǎo)入。
需要更改你的登錄名的權(quán)限,打開(kāi)方式如下:
雙擊安全性;

雙擊登錄名;

找到你的登錄名(我的是yunmengze),雙擊服務(wù)器角色,將服務(wù)器角色的sysadmin選中:

在sql sever里建立表格時(shí)需要以下注意:
在聲明表格變量時(shí)不要用nvarchar,varchar,因?yàn)檫@兩個(gè)聲名的字符串編碼是GBK編碼,如果在pycharm里插入數(shù)據(jù)時(shí)會(huì)因?yàn)?strong>pycharm執(zhí)行過(guò)程使用utf-8編碼導(dǎo)致插入后亂碼。所以在聲明table時(shí)字符串盡量用nchar(20),這種方式是utf-8編碼,其中的數(shù)字20是字符串的大小,一個(gè)漢字大概能占用2個(gè)位置,所以聲明的大小不能太大,更不能過(guò)小。
示例如下:(先別粘,后續(xù)有總的,先看懂是怎么一回事)
use soft2104 create table soft2110(xh int,dp nchar(20),pr nchar(20),id nchar(30), nm nchar(20))
如果你之前聲明過(guò)soft2110表格但是使用了GBK編碼的nvarchar,varchar,你可以通過(guò)以下代碼刪除表格soft2110:
drop table soft2110
以下示例是完整的操作示例(已經(jīng)給你的用戶打開(kāi)權(quán)限,復(fù)制完整代碼的時(shí)間到了):
use soft2104 drop table soft2110 create table soft2110(xh int,dp nchar(20),pr nchar(20),id nchar(30), nm nchar(20)) bulk insert soft2110 --txt text from 'd:2104.txt' with(fieldterminator = '\t',rowterminator = '\n')--\t是空格 delete from soft2110 where xh=71
示例需要在D盤(pán)建立2104.txt文件,示例數(shù)據(jù)是:
1 軟件學(xué)院 軟件2204 31212121212 云夢(mèng)澤
2 軟件學(xué)院 軟件2204 31313131313 上林賦
注意,保存后需要另存為D盤(pán)的2104.txt文件進(jìn)行替換,編碼變成ANSI
增刪改查主要用的是sql sever里的execute函數(shù)示例如下:
在你的連接成功后的pycharm里加入以下代碼,實(shí)現(xiàn)對(duì)上述的表格實(shí)現(xiàn)查找:
cur = connect.cursor()
sqlstr = "select * from soft2110"
cur.execute(sqlstr)
data = cur.fetchall()
cur.close()
for i in range(len(data)):
for t in range(len(data[i])):
print(str(data[i][t]).strip(), end=' ')
print('\r')
connect.close()就會(huì)得到以下輸出,注意執(zhí)行之后關(guān)閉了游標(biāo)和連接(如果是帶循環(huán)的操作可以將connect.close()放在退出循環(huán)操作執(zhí)行,最后再斷開(kāi)與sql sever的連接;斷開(kāi)游標(biāo): cur.close() 游標(biāo)用的時(shí)候打開(kāi),不用的時(shí)候隨即關(guān)閉):
1 軟件學(xué)院 軟件2204 31212121212 云夢(mèng)澤
2 軟件學(xué)院 軟件2204 31313131313 上林賦
注意其中data是列表里套用元組的形式,以上兩個(gè)for循環(huán)是打開(kāi)列表和元組的過(guò)程:
[(1,軟件學(xué)院,軟件2204,31212121212,云夢(mèng)澤),(2,軟件學(xué)院,軟件2204,31313131313,上林賦)]
對(duì)數(shù)據(jù)查詢用的是:
cur.execute(sqlstr)
data = cur.fetchall()
對(duì)數(shù)據(jù)增,刪用的是:
cur.execute(sqlstr)
connect.commit()
示例如下:
print("輸入案例:“醫(yī)學(xué)院 臨床2204 349849848 岳陽(yáng)城”")
add = input('請(qǐng)輸入‘學(xué)院 專業(yè) 學(xué)號(hào) 姓名':')
try:
cur = connect.cursor()
sqlstr = "select * from soft2110"
cur.execute(sqlstr)
data = cur.fetchall()
sqlstr = f"select * from soft2110 where id = '{add[2]}'"
cur.execute(sqlstr)
acc = cur.fetchall()
if acc:
print("學(xué)號(hào)重復(fù),請(qǐng)重新插入")
return
try:
sqlstr =f"insert into soft2110 values ({len(data) + 1},'{add[0]}','{add[1]}','{add[2]}','{add[3]}')"
# print(sqlstr)
cur.execute(sqlstr)
connect.commit()
print("插入成功")
except:
print("插入失敗請(qǐng)重試")
cur.close()
connect.close()
except:
print("輸入錯(cuò)誤")Tip:
sqlstr = f"select * from soft2110 where id = '{add[2]}'"f 和 " "和 { } 結(jié)合是將 { } 內(nèi)的數(shù)據(jù)帶入進(jìn)字符串中,達(dá)到鏈接的作用,不加 f 中 { } 內(nèi)的add[2]數(shù)據(jù)沒(méi)辦法讀取到字符串中,達(dá)到運(yùn)算拼接的效果。
例如:
print(f"輸出結(jié)果為{2*3}")
打印:輸出結(jié)果為6
print("輸出結(jié)果為{2*3}")
打?。狠敵鼋Y(jié)果為{2*3}
刪除操作(思路如下):
de = input('請(qǐng)輸入刪除的學(xué)號(hào):')
sqlstr = f"delete from soft2110 where id = '{de}'"完整的刪除代碼如下:
def delete(connect, de):
cur = connect.cursor()
sqlstr = f"select * from soft2110 where id = '{de}'"
cur.execute(sqlstr)
acc = cur.fetchall()
if acc:
sqlstr = f"delete from soft2110 where id = '{de}'"
cur.execute(sqlstr)
connect.commit()
cur.close()
print("刪除成功")
else:
print("學(xué)號(hào)不存在")
cur.close()
return
de = input('請(qǐng)輸入刪除的學(xué)號(hào):')
try:
delete(connect, de)
except Exception as e:
print(f"Error: {e}")具體的實(shí)現(xiàn)方式是,通過(guò) execute( ) 函數(shù)將數(shù)據(jù)庫(kù)中的操作移動(dòng)到python中,先對(duì)數(shù)據(jù)庫(kù)的學(xué)號(hào)進(jìn)行預(yù)判斷,如果沒(méi)有這個(gè)學(xué)號(hào)返回學(xué)號(hào)不存在的輸出,如果學(xué)號(hào)存在則返回刪除成功,如果發(fā)現(xiàn)其他錯(cuò)誤則返回刪除失敗用try函數(shù)增加了函數(shù)的容錯(cuò)性,通過(guò)將except函數(shù),做到輸出錯(cuò)誤的目的,通過(guò)返回的錯(cuò)誤類型再進(jìn)行代碼調(diào)試。
到此這篇關(guān)于如何使用Pycharm連接SQL Sever(詳細(xì)教程)的文章就介紹到這了,更多相關(guān)Pycharm連接SQL Sever內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間已到的問(wèn)題
這篇文章主要介紹了SQL數(shù)據(jù)庫(kù)連接超時(shí)時(shí)間已到的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
為數(shù)據(jù)庫(kù)生成某個(gè)字段充填隨機(jī)數(shù)的存儲(chǔ)過(guò)程
為數(shù)據(jù)庫(kù)生成某個(gè)字段充填隨機(jī)數(shù)2010-05-05
MyBatis SQL xml處理小于號(hào)與大于號(hào)正確的格式
這篇文章主要介紹了MyBatis SQL xml處理小于號(hào)與大于號(hào)正確的格式,需要的朋友可以參考下2018-06-06
sql server使用臨時(shí)存儲(chǔ)過(guò)程實(shí)現(xiàn)使用參數(shù)添加文件組腳本復(fù)用
這篇文章主要介紹了sql server通過(guò)臨時(shí)存儲(chǔ)過(guò)程實(shí)現(xiàn)使用參數(shù)添加文件組腳本復(fù)用,需要的朋友可以參考下2019-12-12
SQL Server 海量數(shù)據(jù)導(dǎo)入的最快方法
這篇論壇文章(賽迪網(wǎng)技術(shù)社區(qū))詳細(xì)講解了SQL Server海量數(shù)據(jù)導(dǎo)入的最快方法,更多內(nèi)容請(qǐng)參考下文2008-12-12
Replace關(guān)鍵字的妙用查詢是否包含某個(gè)特定字符串
Replace關(guān)鍵字主要是用來(lái)將字符串中的某個(gè)字符替換成別的字符,今天要為大家介紹下使用它來(lái)查詢是否包含某個(gè)特定字符串,示例代碼如下,感興趣的朋友可以參考下2013-08-08
win2003安裝sqlserver 2000提示無(wú)法驗(yàn)證產(chǎn)品密鑰的解決方法
由于腳本之家的安全設(shè)置,刪除了很多安全隱患的東西,也導(dǎo)致了一些軟件安裝出現(xiàn)錯(cuò)誤,所以建議大家在安裝好軟件再安全設(shè)置。今天就出現(xiàn)了安全sql2000時(shí)提示提示無(wú)法驗(yàn)證產(chǎn)品密鑰,下面的具體的解決方法。2011-07-07
SQL Server實(shí)現(xiàn)自動(dòng)循環(huán)歸檔分區(qū)數(shù)據(jù)腳本詳解
最近在工作中遇到了關(guān)于sql server的一個(gè)問(wèn)題,通過(guò)查找相關(guān)的資料終于解決了,所以下面這篇文章主要給大家介紹了關(guān)于SQL Server如何實(shí)現(xiàn)自動(dòng)循環(huán)歸檔分區(qū)數(shù)據(jù)腳本的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09

