python连接sql server方法总结

亡梦爱人 提交于 2020-01-18 09:39:38

前几天想把爬取的招聘数据存到sql server数据库中,但是python程序一直连不上sql server,也想上网找博客来解决问题,但是千篇一律,讲得太简单并不能解决问题,最后自己仔细从sql server的登录设置、配置管理器、端口来着手考虑自己解决问题。现在总结一下方法。

1. 配置管理器

对象资源管理器
首先需要登录启动相应的数据库实例,一开始的弹窗在还未启动服务器实例的时候是无法登录连接到对象资源管理器的,所以需要关闭一开始的弹窗,手动在本地服务器组中选择安装好的实例,右键点击“服务控制”启动,然后才可以登录连接其对象资源管理器。角色登录
已连接的数据库实例也要确保能使用sql server角色的方式登录
在这里插入图片描述
在安全性查看数据库的用户,给用户设置好密码,确保你所用到的用户能登陆数据库。可以使用这个用户点击“连接”输入用户名和密码测试一下你所用的的用户是否真的能登上数据库

2. 配置管理器

配置管理器
在配置管理器的SQL Server网络配置中要启用相应数据库实例的TCP/IP。

3. 使用pymssql或pyodbc连接sql server

我还是比较推荐使用pyodbc的,因为pyodbc的文档更为丰富,异常报错信息也要比pymssql明确,更有利于debug。

pymssql
conn = mssql.connect(host='localhost',
                     server=r'DESKTOP-3F568LV\MSSQL_INSTANCE',
                     user='你的登录名',
                     password='你的密码',
                     database='你创建好的数据库',
                    charset='utf8')

user\password\database,都比较容易,关键是host,server怎么赋值。server就是在sql server连接登录好对象资源管理器的服务器实例(安装时就已经创建好的),host的赋值具体看sql server 的tcp/ip的属性。

tcp/ip
其实许多人没连上sql server主要还是网络端口的问题,1433是sql server默认端口,要确保1433端口开放才能连上,方便连接最好在ipall把的TCP动态端口留空,设置一个1433固定端口。手动启用127.0.0.1/0.0.0.0/localhost的ip地址和设置好端口。

重启
最好修改后,还要重启相应的服务才能生效。然后在cmd使用netstat -an命令查看相应ip的1433端口是否开放(一般由应用程序来自动开放端口,无法手动开放)。最后根据tcp/ip属性的ip地址赋值host就好了。

如果还是不能连上,则很有可能是防火墙屏蔽了该端口。需要在防火墙新建端口的入站出站规则。

pyodbc
command = 'DRIVER={用户数据源名称};server=localhost;DATABASE=jobinfo;UID=用户名;PWD=密码'
conn = pyodbc.connect(command)

因为pyodbc依赖于ODB数据源管理程序来连上sql server,所以需要手动添加sql server为用户数据源。driver赋值为用户数据源中相应的名称。server类似于pymssql的host,不在此赘述

数据源
在“你想连接哪一个sql server”那里选择你创建好的服务器实例,最后一步向导测试一下是否能连接成功。

THE END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!