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正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
python多线程方式执行多个bat代码
Jun 07 Python
python爬取w3shcool的JQuery课程并且保存到本地
Apr 06 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python numpy 显示图像阵列的实例
Jul 02 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
python3+PyQt5 数据库编程--增删改实例
Jun 17 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
python 下划线的多种应用场景总结
May 12 Python
Python 中random 库的详细使用
Jun 03 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
JS 网站性能优化笔记
2011/05/24 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
初学Javascript的一些总结
2008/11/03 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Python3爬虫里关于Splash负载均衡配置详解
2020/07/10 Python
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
远程调用的原理
2014/07/05 面试题
办公室主任主任岗位责任制
2014/02/11 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
授权委托书格式范文
2014/08/02 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
如何利用python实现Simhash算法
2022/06/28 Python