背景:
有一个项目,想要用python连接A ip地址的sqlserver取数据,然后根据里面的表进行一些操作以后得到结果表,结果表要存到B ip 地址的mysql服务器里面,由于A ip地址的sqlserver服务器需要登陆政务云,登陆以后外网上不了,因此决定先用本地的sqlserver服务器来进行连接测试,成功了以后才连接A ip地址的sql server
然后,我就开始了四处查找,感觉很奇怪的是,都没有人教怎么建立本地sql server连接?或者是我搜索方式不对?总之是四处查,现在误打误撞连接上了。
主要步骤
1.跟着腾讯的这个网站教程(https://cloud.tencent.com/developer/article/1889410)把sql server和Microsoft SQL Server Management Studio 18A安装上,中间这个步骤的账号和密码要记起来。
这两个都安装完以后,我看了一下服务器名称感觉好奇怪,我现在想在navicat里面连接本机的sql server
navicat需要填写的信息如下(本来我不知道主机写什么,但是我的navicat还连接了本机的mysql,里面的主机也填的是localhost,因此我试了一下localhost,然后用户名和密码填写了刚刚跟着腾讯云下载过程中设置的用户名和密码,结果!!!居然连接成功了!!!)
接下来就是用Python 的pyodbc来跟sql server连接了哈哈哈哈
加了这句话就不报错了,不加的话会报下面的错,(参考https://stackoverflow.com/questions/71732117/laravel-sql-server-error-odbc-driver-18-for-sql-serverssl-provider-error141解决的)
耶!!!!连接成功了
代码如下:
import pyodbc
import pandas as pd
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'localhost'
database = 'test'
username = 'sa'
password = 'XXXXXX' #自己的密码,这里我就不显示我自己的了
cnxn = pyodbc.connect('DRIVER={ODBC Driver 18 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password+';TrustServerCertificate=yes;')
cursor = cnxn.cursor()
sql = 'select * from zztest'
cursor.execute( sql )
columns = ['id']
data = cursor.fetchall()
data = pd.DataFrame(data, columns=columns)
print(data)