Python基于Pymssql模块实现连接SQL Server数据库的方法详解


Posted in Python onJuly 20, 2017

本文实例讲述了Python基于Pymssql模块实现连接SQL Server数据库的方法。分享给大家供大家参考,具体如下:

数据库版本:SQL Server 2012

按照Python版本来选择下载pymssql模块,这样才能连接上sql server。

我安装的python版本是3.5 ,64位的,所以下载的pymssql模块是:pymssql-2.1.3-cp35-cp35m-win_amd64.whl

我把文件下载后放到E盘,安装pymssql模块:

C:\Users\Administrator>pip install e:\pymssql-2.1.3-cp35-cp35m-win_amd64.whl
Processing e:\pymssql-2.1.3-cp35-cp35m-win_amd64.whl
Installing collected packages: pymssql
Successfully installed pymssql-2.1.3

一、创建数据库Test、表tb、插入数据

特别需要注意的是:为了避免乱码问题,这里Name列是nvarchar类型的(适合中文),不会出现乱码现象,一开始用的varchar类型出现了乱码。

create database Test;
go
use test;
go
if object_id('tb') is not null
  drop table tb;
go
CREATE TABLE TB(ID INT,NAME NVARCHAR(20),SCORE NUMERIC(10,2));
INSERT INTO TB(ID,NAME,SCORE)
VALUES(1,'语文',100),
   (2,'数学',80),
   (3,'英语',900),
   (4,'政治',65),
   (5,'物理',65),
   (6,'化学',85),
   (7,'生物',55),
   (8,'地理',100)

二、连接数据库、查询、增加、更新数据

connect的参数:

user:用户名
password:密码
trusted:布尔值,指定是否使用windows身份认证登陆
host :主机名
database:数据库
timeout:查询超时
login_timeout:登陆超时
charset:数据库的字符集
as_dict:布尔值,指定返回值是字典还是元组
max_conn:最大连接数

# -*- coding:gbk -*-
import pymssql
#数据库连接
conn=pymssql.connect(host='wc-pc',user='sa',password='ggg',database='Test')
#打开游标
cur=conn.cursor();
if not cur:
  raise Exception('数据库连接失败!')
sSQL = 'SELECT * FROM TB'
#执行sql,获取所有数据
cur.execute(sSQL)
result=cur.fetchall()
#1.result是list,而其中的每个元素是 tuple
print(type(result),type(result[0]))
#2.
print('\n\n总行数:'+ str(cur.rowcount))
#3.通过enumerate返回行号
for i,(id,name,v) in enumerate(result):
  print('第 '+str(i+1)+' 行记录->>> '+ str(id) +':'+ name+ ':' + str(v) )
#4.修改数据
cur.execute("insert into tb(id,name,score) values(9,'历史',75)")
cur.execute("update tb set score=95 where id=7")
conn.commit() #修改数据后提交事务
#再查一次
cur.execute(sSQL)
#5.一次取一条数据,cur.rowcount为-1
r=cur.fetchone()
i=1
print('\n')
while r:
  id,name,v =r #r是一个元祖
  print('第 '+str(i)+' 行记录->>> '+ str(id) +':'+ name+ ':' + str(v) )
  r=cur.fetchone()
  i+= 1
conn.close()

基本的步骤就是:

(1)连接数据库,指定连接参数
(2)打开cursor,执行sql
(3)通过cursor获取数据,具体可以是一次获取所有数据,也可以是一次获取一行。
 整个结果集是元组列表,就是list类型的,而每一条记录是一个tuple,也就是元祖。
(4)如果是增、改数据,必须就要调用commit()函数来提交事务,否则程序已退出,数据库里的数据不会有变化。
(5)最后要用close关闭连接。

运行效果:

Python基于Pymssql模块实现连接SQL Server数据库的方法详解

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python验证企业工商注册码
Oct 25 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
Python socket实现简单聊天室
Apr 01 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python与字符编码问题
May 24 Python
pytorch实现seq2seq时对loss进行mask的方式
Feb 18 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
Dec 17 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 #Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 #Python
Python函数式编程
Jul 20 #Python
python 换位密码算法的实例详解
Jul 19 #Python
python实现rsa加密实例详解
Jul 19 #Python
Python中标准库OS的常用方法总结大全
Jul 19 #Python
spyder常用快捷键(分享)
Jul 19 #Python
You might like
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
js常用排序实现代码
2010/12/28 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
2016/07/27 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Python自省及反射原理实例详解
2020/07/06 Python
Python为何不支持switch语句原理详解
2020/10/21 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
2021/01/27 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
什么是跨站脚本攻击
2014/12/11 面试题
new修饰符是起什么作用
2015/06/28 面试题
高中毕业的自我鉴定
2013/12/09 职场文书
迟到检讨书900字
2014/01/14 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
2015年元旦活动总结
2014/05/09 职场文书
毕业生求职信
2014/06/10 职场文书
2014年保育员工作总结
2014/12/02 职场文书
世界文化遗产导游词
2015/02/13 职场文书
民主生活会意见
2015/06/05 职场文书