大家好,我是老表~
哈喽大家好,前段时间,有个读者提了个需求,将excel文件批量存储到sqlserver,不知道大家sqlserver用的多不多,我是毕业后就没用过了,基本都是和mysql打交道。
这不正好有一台windows服务器,所以就用这个来安装下sqlserver,解决读者的问题吧。
这篇文章给大家介绍下windows下如何快速安装sqlserver,并使用python连接上,并非想象中一帆风顺,有一些坑,所以一并记录,希望对大家学习有所帮助。
1、下载安装包
我们直接访问官网下载即可,自己本地测试使用可以选择开发者版本,功能更全。
代码语言:javascript复制https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
2、安装sqlserver
这里建议大家自定义,可以配套安装一些其他工具,也可以和我一样直接选择基本,相当于只安装了数据库,配置环境后可以在cmd里链接操作,但是很麻烦!!!
选择自己的安装位置,我这里服务器只有一个盘符,就没改,大家可以随便安装到自己想安装的盘符。
到这里,数据库基本服务我们就安装好了(默认会自动配置环境变量、启动服务),你可以直接点击立即连接
按钮测试链接,还可以点击自定义
安装其他相关工具,或者点击安装SSMS
(sqlserver数据库管理工具,推荐安装)。
Server=localhost;Database=master;Trusted_Connection=True;
3、安装使用数据库管理工具
前面说了,我们目前只安装了基本的sqlserver服务,现在我们可以在windwos cmd中使用osql指令连接数据库进行操作,但是很麻烦,所以我推荐还是安装下SSMS
,选择好安装目录后,直接点击安装即可。
需要重启下电脑,重启前请先按确保自己没有正在编辑且没保存的文件,避免数据丢失。
重启后,打开电脑,我们在电脑开始里,可以找到我们新安装的数据库管理工具,直接双击即可打开。
点击连接
->数据库引擎
,即可选择要连接的数据库。
这里我们连接本地的数据库,第一次直接使用Windows身份验证
登录,无需输入用户名密码。
连接成功后,然后我们右键,选择新建数据库,可以新建一个study
数据库,用于存放我们测试使用的数据表。
然后我们需要新建一个登录名,方便远程或者代码使用,选择安全性
->登录名
->新建登录名
即可。
输入登录名,并选择SQL Server身份验证(S)
,然后输入密码,选择默认数据库为study
。
新建用户后,我们还需修改下数据库连接属性,选中数据库右键,选中属性。
选中安全性,服务器身份验证需要选择SQL Server 和 Windows身份验证模式(S)
。
点击确认后,会提示需要重启SQL Server服务。
我们可以到系统服务中,找到SQL Server,然后右键选择重启服务即可。
然后我们再新建一个数据库连接,输入用户明和密码即可成功登录啦。
如果大家远程登录遇到下面问题20009,b'DB-Lib error message 20009...
找了很久,才找到问题解决方法,感谢stackoverflow中@Hainan Zhao 提供的解决方法。
代码语言:javascript复制https://stackoverflow.com/questions/19348255/pymssql-operationalerror-db-lib-error-message-20009-severity-9
这是因为我们没有开启sqlserver的TCP/IP本地连接,
因此,只需在 SQL Server 配置管理器中打开对 127.0.0.1:1433 的访问即可。
1)开始 -> 所有程序 -> Microsoft SQL Server 2019 -> 配置工具 -> SQL Server 配置管理器
2)SQL Server 网络配置 -> MSSQLSERVER 的协议 TCP/IP -> 属性 -> IP 地址。找到 127.0.0.1 并将“已启用”更改为“是”。如果需要通过ip远程连接,还可以添加上服务器的ip地址。
4、Python连接sqlserver数据库
这里我使用的是:pymssql sqlalchemy pandas 来读写sqlserver数据。
- 安装相关第三方包
pip3 install pymssql sqlalchemy pandas
- 连接数据库,并读取表内容
from sqlalchemy import create_engine
import pandas as pd
# 初始化数据库连接引擎
# create_engine("数据库类型 数据库驱动://数据库用户名:数据库密码@IP地址:端口/数据库",其他参数)
engine = create_engine("mssql pymssql://sa:123456@localhost/study?charset=GBK")
# 读取的sql语句 testc表中的前3条数据
sql = f'select top 3 * from testc'
# 第一个参数:查询sql语句
# 第二个参数:engine,数据库连接引擎
pd_read_sql = pd.read_sql(sql, engine)
print(pd_read_sql)
这里有个坑,sqlserver创建数据库默认是gbk编码,如果在上面连接时不指定charset=GBK
,那么运行sql读写时,就会报下面错误20002
。
添加上数据库字符编码后,就可以正常读写数据库啦,比如上面代码,我在数据库study中新建了一个testc表,里面随便插入了数据,上面代码就是读取testc表中的前3条数据,运行结果如下:
到这里,我们就完成了Windows下SQL Server服务和数据库管理工具安装和简单配置工作,以及如何使用python连接读写SQL Server中的数据表,后面我们将详细分析读者需求,批量写入Excel数据进入SQL Server。