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继承问题
May 29 Python
Python面向对象特殊成员
Apr 24 Python
Python随机读取文件实现实例
May 25 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
python使用Matplotlib改变坐标轴的默认位置
Oct 18 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 Python
python 如何实现遗传算法
Sep 22 Python
python openpyxl模块的使用详解
Feb 25 Python
Python语言规范之Pylint的详细用法
Jun 24 Python
Python中字符串对象语法分享
Feb 24 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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来处理多个提交任务
2008/05/08 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
2014/09/16 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
Linux内核产生并发的原因
2012/07/13 面试题
导游的职业规划书范文
2013/12/27 职场文书
关于十八大的演讲稿
2014/09/15 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
2015年医药代表工作总结
2015/04/25 职场文书
上班迟到检讨书
2015/05/06 职场文书
nginx配置之并发频次限制
2022/04/18 Servers