以下摘自:
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2019年份推出的SQL SERVER 2019。
SQL Server是微软推出的重量级的数据库,目前有多个版本,如2000、2008、2012等,这些版本名字均为该版本推出的年份,每个版本的差异并不是特别大。本文使用SQL Server2016。
传送门:
本文代码已上传至GitHub,项目地址如下:
https://github.com/XMNHCAS/SQLServerPythonDemo
python内未集成SQLServer的操作库,需要安装pymssql库。
pip3 install pymssql
安装完成后使用import pymssql导入。
pymssql有官方文档,里面有更详细的使用示例,链接地址如下:
数据库远程访问配置
使用pymssql访问SQLServer,需要启用SQLServer的TCP/IP协议。
如下图所示,打开SQLServer配置管理器,选择“SQL Server网络配置”中对应的需要使用的实例,在右侧窗口中启用TCP/IP协议。
接着重启SQL Server服务,就可以通过IP的形式访问数据库了。
服务重启完成后,使用Navicat测试,可以看到连接成功。
新建数据库
新建CreateDatabase.py,使用pymssql创建TestDB数据库。
db.cursor()创建的游标对象,默认返回的是元组,通过设置as_dict=True可以将返回的数据改成字典类型。
如果最后再通过db.commit()来提交事务操作,可能会出现创建数据库失败的情况,故此处设置为autocommit,在游标执行sql的时候就提交操作。
运行结果如下:
新建数据表
新建CreateTable.py,使用pymssql在TestDB数据库中新建一个Persons表。
运行结果如下:
新增记录(Create)
使用游标执行插入语句,不同于pymysql,pymssql不会返回游标执行后影响的行数。
而且由于编码问题,pymssql查询出来的中文数据,如果不进行转码则会输出乱码,所以后面均采用循环输出数据,同时将中文数据改成gbk的编码。该乱码问题可以通过设置数据库字段的编码格式的方式来解决,但是会稍微影响数据库存储性能,故此处不进行演示。
此方式支持单条数据插入和批量插入。
运行结果如下:
检索记录(Retrieve)
执行查询语句后,可以使用游标的fetchone方法获取单条数据,也可以使用fetchmany获取指定数量的数据,还可以用fetchall直接获取全部数据。为了结果显示得更加清晰,此处全部使用循环进行数据输出。
运行结果如下:
更新记录(Update)
使用游标执行update语句。此方法支持单条数据修改及批量修改。
运行结果如下:
删除数据(Delete)
使用游标执行delete语句。此方法也支持单条数据删除以及批量删除。
运行结果如下: