News from this site

 Rental advertising space, please contact the webmaster if you need cooperation


+focus
focused

classification  

no classification

tag  

no tag

date  

no datas

Pycharm连接SQL Sever(详细教程)

posted on 2023-06-06 12:17     read(1133)     comment(0)     like(10)     collect(4)


How to use pycharm to connect to SQL Sever:

It should be that all errors have been experienced (it has to be said that it is quite broken)


Table of contents

Step 1: First check whether the password function is enabled on your SQL Server

Step 2: Create an empty database and create a dedicated user

Step 3: Open port 1433

Step 4: Test in pycharm

Step 5: The server contains garbled Chinese characters and error correction

Import data, add, delete, check operation of SQL Sever in pycharm




Tip: Do not skip operations.

Step 1: First check whether the password function is enabled on your SQL Server

If the password function is not turned on, only the new login name will appear :


Title: CONNECT TO SERVER ------------------------------ Unable to connect to LAPTOP-40O6HVDS. ------------------------------ Additional Information: A successful connection to the server was established, but an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - There is no process on the other end of the pipe.) (Microsoft SQL Server, error: 233)  


The specific implementation of the unlock password function is as follows:

095632fe9cc845fd92c1dfedb243d8e3.png

 When I downloaded SQL Server, I used computer authentication to log in, and I need to set a password to log in :


 Find the first one of the Object Explorer, and the following page appears after clicking the right mouse button:

5802166adf3e4a67bdbb972f9c1ed4c2.png


点击属性,进入页面后点击安全性,会出现:

a5cdcee7f74843d0b69f38ea8c6109c1.png

服务器身份验证选中第二个SQL Sever 和Window 身份验证)模式之后点击确定。

步骤二:建立一个空数据库,并且建立一个专属用户

建立专属用户和空数据库的原因是防止以后对数据库操作失误时影响到其它的数据库

首先需要点击新建查询并且执行以下操作

create database soft2104

执行会出现一个soft2104的新数据库(soft2104我的数据库名称,后续需要放在pycharm里


如果你觉得数据库难听可以执行如下操作进行删除数据库:(不过需要新建一个数据库

  1. use master --删数据库
  2. drop database soft2104 --删数据库 

建立好数据库后双击安全性

9a27c26ac2c344f8b36a0dbc5cbf8c8a.png

 双击登录名后点击鼠标右键,点击新建登录名

e81f49ca1eb84325ad0343c4ef1a998a.png


编辑一个登录名yunmengze这个是我的用户名,后续需要放在pycharm里

3843f4d67c084453909fe52c41b51cf2.png


接下来点击SQL Sever 身份验证输入密码,随便起一个密码,忘了可以再更改。在这里我就用123456代替(123456是我的密码,后续需要放在pycharm里)。


 接下来把强制实施密码策略的对号给点掉(不然后来会遇到各种登录问题)

6e8d5bc0513e4cae9d47e5ea2160523e.png

 变成这样:

e65d53ef9c504f918aa65d650f034c1f.png


点击用户映射,将你的数据库打勾

eef4524f75b247b2943aa97adf5a5040.png


将下边的db_ower对勾选中

9c7e10a0f8c74467b956b2399ce09d51.png

 点击确定,之后进行验证:

6d166d7510114bfb861f25428808efe7.png

 点击电脑和叉的标志退出服务器断开连接,之后点击电脑和绿线的标志连接服务器

 078a47d325e44a56be69bbf347ac8ef4.png

点击SQL Sever 身份验证输入账号密码如果成功的连接,就会进入数据库,你只能对你用户对应下的数据库进行各种操作:

 652ee19a72ef4fcd93324fe98220be4b.png

 如果你的SQL Sever没有打开密码功能就会出现以下提示


标题: 连接到服务器 ------------------------------  无法连接到 LAPTOP-40O6HVDS。  ------------------------------ 其他信息:  已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: Shared Memory Provider, error: 0 - 管道的另一端上无任何进程。) (Microsoft SQL Server,错误: 233)  


步骤三:打开1433 端口

首先需要检测自身的 1433 端口是否打开(一般默认的都是关闭的需要自己打开

1433应该是电脑的一个端口,可以链接电脑的(其实不需要知道是什么

点击:win和R,输入cmd点击回车出现如下界面:

6f6e0db039da4f32a19d7a7a38691442.png

输入telnet localhost  1433并点击回车

一般会出现一下错误


'telnet' 不是内部或外部命令,也不是可运行的程序


解决办法

点击:win和R,输入control点击回车出现如下界面:

8867573db59e469198d02ec3dd6e0b86.png

点击程序不要点到卸载程序

e51a19d642664f51a53e032aaa288abb.png

 点击启动或关闭Windows 功能


a2415da184e74442aa7749cc4a0cb679.png

将Telnet客户端对号选中,点击确定,会经过大概1分钟左右的等待页面

再次重复win和R,输入cmd点击,输入telnet localhost  1433并点击回车出现以下错误


正在连接localhost...无法打开到主机的连接。 在端口 1433: 连接失败


你已经成功了一半了

打开以下程序:

3147a1015bf14fb080c4513294413d0e.png

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

 99e06808661d48de84cafccb47751ab5.png

 打开之后会出现以下界面:

f1aff8d859dd46dd9b4fcb8ed01de70d.png

 禁用所有上述出现的程序必须先这么做


点击SQL Sever网络配置,然后点击MSSQLSEVER的协议

d9d61941bbd9415db58cb1dcaebba60b.png

 双击这个TCP/IP,进入之后将TCP/IP的启用改为 是

b775cb7ba8844c1880e48d2a19436802.png2eb2fa8b9b2248339045030f5c59ec3a.png

点击IP地址

b87959c55c7d45f09858b2149646746f.png


 将IP1、IP2的启用改为是,观察TCP端口是不是1433。(一共改两个)

3e6a0ceb84ff4a39958aa2310fa5d7e1.png

往下滑出现IPAll,观察其TCP端口是不是1433,最后别忘记点应用不是点击确定

eb6938dd841d4bfa93f211e617833dff.png


 经过上述操作后重启电脑,重新打开该软件,然后再将下边的东西改成启动SQL Sever代理启动失败与否不会影响SQL Sever的使用。

5f1b21e97ab0425183ada66bc5db9390.png


点击:win和R,输入cmd点击回车,并在其中输入telnet localhost  1433 当页面跳转到以下页面则说明你的1433配置成功:

197af11d1fb245438da16478397e0fb2.png

步骤四:在pycharm中测试

经过以上操作之后打开pycharm在终端输入,安装pycharm和SQL Sever链接的库:

pip install pymssql


pymssql库安装成功后建立新的py文件并输入以下代码并执行

  1. import pymssql
  2. connect = pymssql.connect(host='localhost',server='LAPTOP-40O6HVDS', port='1433',user='yunmengze', password= '123456', database='soft2104')
  3. # host不要改其参数,server改成你的服务器名, port不要改其参数,user你的用户名, password你的密码, database你的数据库名
  4. if connect:

'yunmengze', '123456', 'soft2104'是上述步骤二操作中设置的。

LAPTOP-40O6HVDS是我的服务器名称,在这里你需要打开你的SQL Sever登录界面进行查看

c6379d3b823c4578b641877527ca7e39.png


如果上述的,代码执行失败,失败示例如下(服务器名字是汉语的):

bd2d627f4d8a4a1ca74548850310e762.png

请用以下代码调试,如果这样能够连接成功请利用步骤五修改服务器名称

  1. import pymssql
  2. connect = pymssql.connect(host='localhost',server='LAPTOP-40O6HVDS', port='1433',user='yunmengze', password= '123456', database='soft2104',charset="GBK")
  3. # host不要改其参数,server改成你的服务器名, port不要改其参数,user你的用户名, password你的密码, database你的数据库名,charset不要改变其参数。
  4. if connect:
  5. print("数据库连接成功")
  6. else:
  7. print("连接失败")

如果你的运行结果是:数据库连接成功

恭喜你的pycharm和SQL Sever链接成功。

剩下的就是学习如何以pycharm为媒介来操作SQL Sever了

SQL Sever在pycharm中的导入数据需要修改用户权限,如果你经过一番波折连接成功建议您往下看……


步骤五:服务器含有汉语的乱码错误修正

下面根据我经历的一下问题做一些补充:

如果你的服务器没有汉语请跳过该步骤。

如果你的服务器是汉语的,登录的时候需要charset="GBK",但是对后续的在数据增加时会因为GBK有乱码的风险,需要做下列一下修改:

 点击此电脑的属性

 进入后点击重命名这台电脑

重命名后重启电脑(为了教程我也是重命名了,………………)

重启电脑后再打开sql sever点击服务器,就可以对服务器进行选择,选择你命名的电脑名称的服务器,尝试一下就会发现也可以进入。


下面教程一种更改服务器名称在pycharm来隐藏真实的服务器名称的方法:

修改服务器的名称(相当于加一个小名),下列操作是在sql sever里新建查询中执行的,需要根据提示修改其中的oldservername和newservername:

  1. /*
  2. select @@SERVERNAME
  3. --查询当前服务器实际名称,在后续操作过程中不会影响该值,服务器的大名
  4. select SERVERPROPERTY('ServerName')
  5. --查看所有定义的服务器
  6. */
  7. sp_helpserver --可以查看服务器的小名
  8. --根据查出的小名进行修改oldservername的值
  9. sp_dropserver 'oldservername'
  10. --newservername是更改后的名称
  11. sp_addserver 'newservername','local'
  12. --将更改后的名称应用newservername是你需要改的
  13. sp_serveroption 'newservername', 'data access', 'on'
  14. --oldservername原来的服务器名,newservername新的服务器名

修改后,用新的服务器名称也能进入服务器,注意不要有汉语

实际服务器如果有汉语请通过上一个方法修改服务器名称先对真实服务器名称修改,增加昵称的方式不会更改原来服务器中包含汉语使服务器无法进入或乱码的错误。


SQL Sever在pycharm中的导入数据,增,删,查操作

如果你想大量导入数据导入数据前需要在sql sever里建立好表格),使用bulk函数,例如:

  1. bulk insert soft2110 --txt插入到soft2110表格中
  2. from 'd:2104.txt' --txt在D盘而且需要其编码为ANSI才行
  3. with(fieldterminator = '\t',rowterminator = '\n')
  4. --\t是每行以空格分割,\n是根据换行将表格导入。

需要更改你的登录名的权限,打开方式如下:

双击安全性

双击登录名

 

 找到你的登录名(我的是yunmengze),双击服务器角色将服务器角色的sysadmin选中

在sql sever里建立表格时需要以下注意:

声明表格变量时不要用nvarchar,varchar,因为这两个声名的字符串编码是GBK编码,如果在pycharm里插入数据时会因为pycharm执行过程使用utf-8编码导致插入后乱码。所以在声明table时字符串尽量用nchar(20),这种方式是utf-8编码,其中的数字20是字符串的大小,一个汉字大概能占用2个位置,所以声明的大小不能太大,更不能过小

示例如下:(先别粘,后续有总的,先看懂是怎么一回事

  1. use soft2104
  2. create table soft2110(xh int,dp nchar(20),pr nchar(20),id nchar(30),
  3. nm nchar(20))

如果你之前声明过soft2110表格但是使用了GBK编码的nvarchar,varchar,你可以通过以下代码删除表格soft2110:

drop table soft2110

以下示例是完整的操作示例(已经给你的用户打开权限,复制完整代码的时间到了):

  1. use soft2104
  2. drop table soft2110
  3. create table soft2110(xh int,dp nchar(20),pr nchar(20),id nchar(30),
  4. nm nchar(20))
  5. bulk insert soft2110 --txt text
  6. from 'd:2104.txt'
  7. with(fieldterminator = '\t',rowterminator = '\n')--\t是空格
  8. delete from soft2110 where xh=71

示例需要在D盘建立2104.txt文件,示例数据是:

1    软件学院    软件2204    31212121212    云梦泽
2    软件学院    软件2204    31313131313    上林赋

注意,保存后需要另存为D盘的2104.txt文件进行替换,编码变成ANSI

增删改查主要用的是sql sever里的execute函数示例如下:

在你的连接成功后的pycharm里加入以下代码,实现对上述的表格实现查找:

  1. cur = connect.cursor()
  2. sqlstr = "select * from soft2110"
  3. cur.execute(sqlstr)
  4. data = cur.fetchall()
  5. cur.close()
  6. for i in range(len(data)):
  7. for t in range(len(data[i])):
  8. print(str(data[i][t]).strip(), end=' ')
  9. print('\r')
  10. connect.close()

就会得到以下输出,注意执行之后关闭了游标和连接如果是带循环的操作可以将connect.close()放在退出循环操作执行,最后再断开与sql sever的连接;断开游标: cur.close()   游标用的时候打开,不用的时候随即关闭):

1    软件学院    软件2204    31212121212    云梦泽
2    软件学院    软件2204    31313131313    上林赋

注意其中data是列表里套用元组的形式,以上两个for循环是打开列表和元组的过程: 

[(1,软件学院,软件2204,31212121212,云梦泽),(2,软件学院,软件2204,31313131313,上林赋)]

数据查询用的是:

        cur.execute(sqlstr)
        data = cur.fetchall()

数据增,删用的是:

        cur.execute(sqlstr)
        connect.commit()

示例如下:

  1. print("输入案例:“医学院 临床2204 349849848 岳阳城”")
  2. add = input('请输入‘学院 专业 学号 姓名’:')
  3. try:
  4. cur = connect.cursor()
  5. sqlstr = "select * from soft2110"
  6. cur.execute(sqlstr)
  7. data = cur.fetchall()
  8. sqlstr = f"select * from soft2110 where id = '{add[2]}'"
  9. cur.execute(sqlstr)
  10. acc = cur.fetchall()
  11. if acc:
  12. print("学号重复,请重新插入")
  13. return
  14. try:
  15. sqlstr =f"insert into soft2110 values ({len(data) + 1},'{add[0]}','{add[1]}','{add[2]}','{add[3]}')"
  16. # print(sqlstr)
  17. cur.execute(sqlstr)
  18. connect.commit()
  19. print("插入成功")
  20. except:
  21. print("插入失败请重试")
  22. cur.close()
  23. connect.close()
  24. except:
  25. print("输入错误")

Tip:

sqlstr = f"select * from soft2110 where id = '{add[2]}'"

The combination of f and " " and { } is to bring the data in { } into the string to achieve the function of linking. Without adding the add[2] data in { } in f, there is no way to read the data into the string to achieve Calculate the effect of splicing.

For example:

print(f"输出结果为{2*3}")

Print: the output result is 6

print("输出结果为{2*3}")

Print: the output result is {2*3}


Delete operation (the idea is as follows):

de = input('Please enter the deleted student number:')
sqlstr = f"delete from soft2110 where id = '{de}'"

The complete deletion code is as follows:

  1. def delete(connect, de):
  2. cur = connect.cursor()
  3. sqlstr = f"select * from soft2110 where id = '{de}'"
  4. cur.execute(sqlstr)
  5. acc = cur.fetchall()
  6. if acc:
  7. sqlstr = f"delete from soft2110 where id = '{de}'"
  8. cur.execute(sqlstr)
  9. connect.commit()
  10. cur.close()
  11. print("删除成功")
  12. else:
  13. print("学号不存在")
  14. cur.close()
  15. return
  16. de = input('请输入删除的学号:')
  17. try:
  18. delete(connect, de)
  19. except Exception as e:
  20. print(f"Error: {e}")

The specific implementation method is to move the operations in the database to python through the execute() function, first pre-judge the student number of the database, if there is no student number, return the output that the student number does not exist, and return if the student number exists If the deletion is successful, if other errors are found, it will return the deletion failure. The try function is used to increase the fault tolerance of the function. By using the except function, the purpose of outputting errors is achieved, and the code debugging is carried out through the returned error type.

The explanation of this issue ends here, and the next issue will show a complete and simple management system...



Category of website: technical article > Blog

Author:Believesinkinto

link:http://www.pythonblackhole.com/blog/article/80604/fd66eb68c9c77c594736/

source:python black hole net

Please indicate the source for any form of reprinting. If any infringement is discovered, it will be held legally responsible.

10 0
collect article
collected

Comment content: (supports up to 255 characters)