环境:Windows_64位 python默认的数据库是 SQLlite,不过它对MySql以及SQL server的支持也可以。这篇文章,介绍下如何在Windows下安装pymssql库并进行连接使用。
版本:python3.6
一、简单介绍
pymssql是一个python的数据库接口,基于FreeTDS构建,对_mssql模块进行了封装,遵循python的DBAPI规范,而FreeTDS是一个C语言连接sqlserver的公共开源库。
它们的关系如下:
具体的内容,可查阅官方文档进行了解:http://pymssql.org/en/stable/index.html
二、下载安装
有两种安装方式,下面分别介绍:
1、vs+pymssql
通过官方文档可知,要安装pymssql首先需要安装vs,根据上图,选择自己的python版本对应的vs版本,以及操作系统版本进行安装包下载:
FreeTDS下载地址:https://github.com/ramiro/freetds/releases/
pymssql下载地址:https://pypi.org/project/pymssql/
下载对应的版本,进行安装,pymssql可以使用pip命令安装,也可以安装包安装,根据个人喜好即可。
安装后,可以通过CMD进入命令行,然后输入pip show mymssql,查看是否安装成功,示例如下:
PS:这种方法安装,可能会出现一些迷之报错,很蛋疼,如果这种方法安装搞不定的话,可以看下面第二种安装方法。。。
2、安装.whl包
如果认真看过官方文档介绍的童鞋,应该注意到了这里的内容,Windows下可以通过安装.whl包来进行安装pymssql,文档介绍如下:
然后可以在python的非官方Windows扩展包站点获取对应的.whl文件,链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
进入该站点以后,Ctrl+F搜索pymssql,然后点击,示例如下:
到达这里,选择你需要的.whl包下载然后进入你的python安装包目录Scripts,利用pip命令,安装即可:
三、连接使用
1、pymssql工作原理
①、使用connect创建连接对象;
②、connect.cursor创建游标对象,SQL语句的执行在游标上执行;
③、cursor.execute()方法执行SQL语句,cursor.fetch()方法获取查询结果;
④、调用close方法关闭游标cursor和数据库连接;
2、示例代码
1# coding=utf-8
2importpymssql
3
4classSQLServer:5def__init__(self,server,user,password,database):
6# 类的构造函数,初始化DBC连接信息
7self.server =server
8self.user =user
9self.password =password
10self.database =database
11
12def__GetConnect(self):
13# 得到数据库连接信息,返回conn.cursor()
14ifnotself.database:
15raise(NameError,"没有设置数据库信息")
16self.conn = pymssql.connect(server=self.server,user=self.user,password=self.password,database=self.database)
17cur =self.conn.cursor()
18ifnotcur:
19raise(NameError,"连接数据库失败")# 将DBC信息赋值给cur
20else:
21returncur
22
23defExecQuery(self,sql):
24'''
25执行查询语句
26返回一个包含tuple的list,list是元素的记录行,tuple记录每行的字段数值
27'''
28cur = self.__GetConnect()
29cur.execute(sql)# 执行查询语句
30result = cur.fetchall()# fetchall()获取查询结果
31# 查询完毕关闭数据库连接
32self.conn.close()
33returnresult
34
35defmain():
36msg = SQLServer(server="127.0.0.1",user="test",password="Test321",database="TEST")
37result = msg.ExecQuery("SELECT TOP 1 Value FROM t_Security_Code WHERE Mobile = '18501007700' ORDER BY InsertTime DESC")
38for(Value)inresult:
39print(Value)
40
41if__name__=='__main__':
42main()
PS:初始化数据库连接信息,数据库地址:server,密码:password,数据库:database!
刚开始我个人也是自定义的,后来老报错,查询了配置信息后才搞定,具体的connect信息如下:
还有两点:
①、一条游标只能执行一条SQL语句,如果需要执行多条,需要创建多条游标,切记!!!
②、SQL语句中有python默认值(比如index)时,给其加上反引号即可。
关于pymssql模块的下载安装以及基础使用,内容如上,仅供参考。
本文包含内容仅供学习交流,版权归原作者所有。
如对本文使用内容有异议,请及时联系我们删除。
-END-
领取专属 10元无门槛券
私享最新 技术干货