Python连接SQL SERVER问题解决

Python连接SQL SERVER问题解决

  • 报错
  • 核查步骤
      • 在配置管理工具中查看127.0.0.1已启用
      • 远程服务也是开启
      • sa账户设置也没有问题
  • 解决方案
      • 使用pip install pymssql时报错
      • 使用指令更新pip,仍然报错
      • 需自行下载pymssql库

报错

在连接数据数据库SQL SERVER时出错,代码如下

import pymysql
import pandas as pd

sql = 'select * from test'
con = pymysql.connect(
    host='127.0.0.1',
    port=1433,
    user='sa',
    passwd='123456',
    db='test'
    ,charset='utf8'
    )
'''
host 数据库地址
user 用户名
port 端口
password 密码
db 数据库
charset 数据库编码
index_col 行索引,默认从0开始,表示第几列作为索引
header 列索引,默认0开始,表示第几行作为索引
'''

df = pd.read_sql(sql,con)

print(df)

报错原因:

pymysql.err.OperationalError: (2003, “Can’t connect to MySQL server on ‘127.0.0.1’ ([WinError 10061] 由于目标计算机积极拒绝,无法连接。)”)

核查步骤

在配置管理工具中查看127.0.0.1已启用

配置管理工具如果找不到,在开始搜索:

SQLServerManager10.msc (10为变量,对应不同的版本)
配置在这里插入图片描述

  • SQL Server配置管理工具(本地)-> SQL Server网络配置 -> MSSQLSERVER协议->TCP/IP(已启用)
    Python连接SQL SERVER问题解决_第1张图片Python连接SQL SERVER问题解决_第2张图片
  • 如果启用了动态端口,下面的也需要注意
    在这里插入图片描述

远程服务也是开启

Python连接SQL SERVER问题解决_第3张图片

sa账户设置也没有问题

安全性:SQL Server和Windows身份验证模式(右键数据库->属性)
sa账号:允许连接数据库引擎,登录名启用,且状态未锁定(安全性->登录名->sa->右键属性)
Python连接SQL SERVER问题解决_第4张图片
Python连接SQL SERVER问题解决_第5张图片
SQL SERVER数据库用Microsoft SQL Server Management Studio 工具可以连接,但使用Python一直连接不上

解决方案

在一度找不到原因的情况下,几乎想要放弃,突然想到这个是SQL SERVER,是不是python导入的模块有区别?因为在使用这个语句连接Mysql是没有问题的。
查了下资料,果然模块pymysql是用来连接mysql的,还有个模块pymssql这个应该是用来连接SQL SERVER的

使用pip install pymssql时报错

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

使用指令更新pip,仍然报错

pip install --upgrade pip
pip install --upgrade setuptools

需自行下载pymssql库

后来在此帖中找到答案:pymssql这个库没有找到对应的python3.8这个版本

https://www.cnblogs.com/xingyunqiu/p/12690143.html

需要自行下载安装,下载地址:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

找到对应的的包下载后使用指令进行安装:

pip install [目录]/[文件]

安装成功后,再简单更新下代码,连接正常,查询成功!!!
pymssql的数据库名键与pymysql稍有出入

import pymssql
import pandas 

connect = pymssql.connect(host='127.0.0.1',port=1433,user='sa',password='123456',database='test',charset='utf8')
 #服务器名,端口,账户,密码,数据库名,编码方式
if connect:
    print("连接成功!")    
else:
    print("连接失败!")
    
sql = 'select * from test'
df = pandas.read_sql(sql,connect)

print(df)

查询结果
Python连接SQL SERVER问题解决_第6张图片

你可能感兴趣的:(python,sqlserver)