草庐IT

Pycharm连接SQL Sever(详细教程)

٩( \'ω\' )و 君莫笑 2023-07-26 原文

如何使用pycharm连接SQL Sever:

应该是所有的错误都经历了(不得不说挺崩溃的)


目录

步骤一:先检测自己的SQL Sever有没有打开密码功能

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

步骤三:打开1433 端口

步骤四:在pycharm中测试

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

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




Tip:不要跳步操作。

步骤一:先检测自己的SQL Sever有没有打开密码功能

如果没有打开密码功能仅新建登录名会出现


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


打开密码功能具体实现操作如下:

 我的SQL Sever下载的时候就是用的电脑身份验证登录的,需要设置密码登录


 找到对象资源管理器的第一个,单击鼠标右键后出现以下页面:


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

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

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

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

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

create database soft2104

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


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

use master --删数据库
drop database soft2104 --删数据库 

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

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


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


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


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

 变成这样:


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


将下边的db_ower对勾选中

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

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

 

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

 

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


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


步骤三:打开1433 端口

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

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

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

输入telnet localhost  1433并点击回车

一般会出现一下错误


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


解决办法

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

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

 点击启动或关闭Windows 功能


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

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


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


你已经成功了一半了

打开以下程序:

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

 

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

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


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

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

点击IP地址


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

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


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


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

步骤四:在pycharm中测试

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

pip install pymssql


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

import pymssql

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

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

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


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

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

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

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

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

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

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


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

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

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

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

 点击此电脑的属性

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

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

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


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

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

/*
select @@SERVERNAME
--查询当前服务器实际名称,在后续操作过程中不会影响该值,服务器的大名
select SERVERPROPERTY('ServerName')
--查看所有定义的服务器
*/


sp_helpserver    --可以查看服务器的小名


--根据查出的小名进行修改oldservername的值
sp_dropserver 'oldservername'

--newservername是更改后的名称
sp_addserver 'newservername','local'

--将更改后的名称应用newservername是你需要改的
sp_serveroption 'newservername', 'data access', 'on'



--oldservername原来的服务器名,newservername新的服务器名

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

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


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

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

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

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

双击安全性

双击登录名

 

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

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

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

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

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

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

drop table soft2110

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

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盘建立2104.txt文件,示例数据是:

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

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

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

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

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()

就会得到以下输出,注意执行之后关闭了游标和连接如果是带循环的操作可以将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()

示例如下:

print("输入案例:“医学院  临床2204  349849848  岳阳城”")
add = input('请输入‘学院 专业  学号 姓名’:')
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("学号重复,请重新插入")
        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("插入失败请重试")
    cur.close()
    connect.close()
except:
    print("输入错误")

Tip:

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

f 和 "  "和 { } 结合是将 { } 内的数据带入进字符串中,达到链接的作用,不加 f 中 { } 内的add[2]数据没办法读取到字符串中,达到运算拼接的效果。

例如:

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

打印:输出结果为6

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

打印:输出结果为{2*3}


删除操作(思路如下):

de = input('请输入删除的学号:')
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("学号不存在")
        cur.close()
    return
de = input('请输入删除的学号:')
try:
    delete(connect, de)
except Exception as e:
    print(f"Error: {e}")

具体的实现方式是,通过 execute(  ) 函数将数据库中的操作移动到python中,先对数据库的学号进行预判断,如果没有这个学号返回学号不存在的输出,如果学号存在则返回删除成功,如果发现其他错误则返回删除失败用try函数增加了函数的容错性,通过将except函数,做到输出错误的目的,通过返回的错误类型再进行代码调试。

本期的讲解到此结束,下期将展示完整的简易的管理系统……

有关Pycharm连接SQL Sever(详细教程)的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  5. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  6. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  7. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  8. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  9. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  10. ruby-on-rails - 什么会导致与 APNS 的连接间歇性断开连接? - 2

    我有一个ruby​​脚本可以打开与Apple推送服务器的连接并发送所有待处理的通知。我看不出任何原因,但当Apple断开我的脚本时,我遇到了管道损坏错误。我已经编写了我的脚本来适应这种情况,但我宁愿只是找出它发生的原因,这样我就可以在第一时间避免它。它不会始终根据特定通知断开连接。它不会以特定的字节传输大小断开连接。一切似乎都是零星的。您可以在单个连接上发送的数据传输或有效负载计数是否有某些限制?看到人们的解决方案始终保持一个连接打开,我认为这不是问题所在。我看到连接在3次通知后断开,我看到它在14次通知后断开。我从未见过它能超过14点。有没有人遇到过这种类型的问题?如何处理?

随机推荐