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 图片验证码代码分享
Jul 04 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
浅谈Python的文件类型
May 30 Python
Python使用defaultdict读取文件各列的方法
May 11 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
Python版名片管理系统
Nov 30 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
Dec 15 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
Python类中方法getitem和getattr详解
Aug 30 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 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处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
JS传参及动态修改页面布局
2017/04/13 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
关于自定义Egg.js的请求级别日志详解
2018/12/12 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
使用python遍历指定城市的一周气温
2017/03/31 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
tensorflow中next_batch的具体使用
2018/02/02 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
前处理班长职位说明书
2014/03/01 职场文书
投标承诺书怎么写
2014/05/24 职场文书
节能环保口号
2014/06/12 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
房地产项目合作意向书
2015/05/08 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
小学运动会加油稿
2015/07/22 职场文书