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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
介绍Python中的__future__模块
Apr 27 Python
Python中encode()方法的使用简介
May 18 Python
Python实现脚本锁功能(同时只能执行一个脚本)
May 10 Python
通过Pandas读取大文件的实例
Jun 07 Python
详解python3 + Scrapy爬虫学习之创建项目
Apr 12 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
python画图把时间作为横坐标的方法
Jul 07 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
Python torch.flatten()函数案例详解
Aug 30 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
Document 对象的常用方法
2009/07/31 Javascript
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
json数据的列循环示例
2013/09/06 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
Vue2.x中的Render函数详解
2017/05/30 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
python的类变量和成员变量用法实例教程
2014/08/25 Python
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
一道Delphi上机题
2012/06/04 面试题
员工自我鉴定
2013/10/09 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
节约用水倡议书
2014/04/16 职场文书
让子弹飞观后感
2015/06/11 职场文书
实习证明模板
2015/06/16 职场文书
党组织结对共建协议书
2016/03/23 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
Python基础之字符串格式化详解
2021/04/21 Python
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python