前文http://www.cnblogs.com/fengpingfan/p/7675291.html,讲述了python操作mssql的步骤、环境创建、常用方法等,本文将实例演示python操作mssql的常规功能脚本。

多不闲述,直接上码。

1.3、简单示例脚本

python操作mssql简单示例脚本如下所示:

 #coding=utf-8
#!/usr/bin/env python
#-------------------------------------------------------------------------------
# Name: DbsUtil.py
# Purpose: 数据库操作工具类
#
# Author: 范丰平 2017-10-01
#
#-------------------------------------------------------------------------------
import sys
import pymssql class MSSQL(object):
"""
对pymssql的简单封装,pymssql库,该库到这里下载:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql
使用该库时,需要在Sql Server Configuration Manager里面将TCP/IP协议开启
""" def __init__(self,host,user,pwd,db):
self.host = host
self.user = user
self.pwd = pwd
self.db = db def __GetConnect(self):
"""
获取连接信息,返回: conn.cursor()
"""
try:
if not self.db:
raise(NameError,"没有设置数据库信息") self.conn = pymssql.connect(host=self.host,user=self.user,password=self.pwd,database=self.db,charset="utf8")
cur = self.conn.cursor()
return cur
except Exception, err:
print "连接数据库失败:%s" % str(err) return None def ExecQuery(self,sql):
"""
执行查询语句,返回包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
调用示例:
ms = MSSQL(host="localhost",user="sa",pwd="123456",db="autoTestMaster")
resList = ms.ExecQuery("SELECT id,NickName FROM atm_User")
for (id,NickName) in resList:
print str(id),NickName
"""
try:
cur = self.__GetConnect()
cur.execute(sql)
resList = cur.fetchall() #查询完毕后必须关闭连接
self.conn.close()
return resList
except Exception, err:
print "查询结果失败。SQL语句:%s,失败原因:%s" % (sql, str(err))
sys.exit(1) def ExecNonQuery(self,sql):
"""
执行非查询语句
调用示例:
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
"""
try:
cur = self.__GetConnect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
except Exception, err:
print "执行失败。SQL语句:%s,失败原因:%s" % (sql, str(err))
sys.exit(1) def query():
## ms = MSSQL(host="localhost",user="sa",pwd="123456",db="autoTestMaster")
## 返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
## ms.ExecNonQuery("insert into WeiBoUser values('2','3')")
sql = "SELECT count(*) as counts_up from Student"
ms = MSSQL(host="127.0.0.1",user="fanfengping",pwd="python_mssql",db="python_mssql")
resList = ms.ExecQuery(sql)
for (counts_up) in resList:
print str(counts_up).decode("utf8")
print counts_up[0] resList = ms.ExecQuery("SELECT no, name, phone, email, addr, description from Student")
for (no, name, phone, email, addr, desc) in resList:
print "no:%s name:%s phone:%s email:%s addr:%s desc:%s" % (no, name, phone, email, addr, desc) def insert():
sql = "INSERT INTO Student values ('chs000000000003', '雪狼', '15212345673', 'shewoqishui20080808@126.com', '华夏', '博客:http://www.cnblogs.com/fengpingfan')"
ms = MSSQL(host="127.0.0.1",user="fanfengping",pwd="python_mssql",db="python_mssql")
resList = ms.ExecNonQuery(sql) def delete():
sql = "DELETE FROM Student WHERE NO = 'chs000000000003'"
ms = MSSQL(host="127.0.0.1",user="fanfengping",pwd="python_mssql",db="python_mssql")
resList = ms.ExecNonQuery(sql) def update():
sql = "UPDATE Student SET email = '1234567890@126.com' WHERE NO = 'chs000000000003'"
ms = MSSQL(host="127.0.0.1",user="fanfengping",pwd="python_mssql",db="python_mssql")
resList = ms.ExecNonQuery(sql) def test_fail():
sql = "UPDATE Student SET emails = '1234567890@126.com' WHERE NO = 'chs000000000003'"
ms = MSSQL(host="127.0.0.1",user="fanfengping",pwd="python_mssql",db="python_mssql")
print ms
print type(ms)
resList = ms.ExecNonQuery(sql) if __name__ == '__main__':
print "query demo:"
query() print "\ninsert demo:"
delete()
insert()
query() print "\nupdate demo:"
update()
query() print "\ndelete demo:"
delete()
query() print "\ntest fail:"
test_fail()

1.4、sqlserver创建数据表脚本如下所示:

 -- ----------------------------
-- Table structure for Student
-- ----------------------------
IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'Student') AND OBJECTPROPERTY(ID, 'IsTable') = 1)
DROP TABLE [dbo].[Student]
GO
CREATE TABLE [dbo].[Student] (
[no] varchar(15) NOT NULL ,
[name] varchar(50) NOT NULL DEFAULT '' ,
[phone] varchar(11) NOT NULL DEFAULT '' ,
[email] varchar(100) NULL DEFAULT '' ,
[addr] varchar(100) NULL DEFAULT '' ,
[description] varchar(100) NULL DEFAULT ''
) GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
NULL, NULL)) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'学生信息表'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'学生信息表'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'no')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'学号'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'no'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'学号'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'no'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'name')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'姓名'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'name'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'姓名'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'name'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'phone')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'手机'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'phone'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'手机'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'phone'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'email')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'邮箱'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'email'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'邮箱'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'email'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'addr')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'住址'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'addr'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'住址'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'addr'
GO
IF ((SELECT COUNT(*) from fn_listextendedproperty('MS_Description',
'SCHEMA', N'dbo',
'TABLE', N'Student',
'COLUMN', N'description')) > 0)
EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'个人简介'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'description'
ELSE
EXEC sp_addextendedproperty @name = N'MS_Description', @value = N'个人简介'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'Student'
, @level2type = 'COLUMN', @level2name = N'description'
GO
-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO Student(no, name, phone, email, addr, description) values ('chs000000000000', '范丰平', '', 'shewoqishui20080808@126.com', '华夏', '博客:http://www.cnblogs.com/fengpingfan')
INSERT INTO Student(no, name, phone, email, addr, description) values ('chs000000000001', '蓝剑', '', 'shewoqishui20080808@126.com', '华夏', '博客:http://www.cnblogs.com/fengpingfan')
INSERT INTO Student(no, name, phone, email, addr, description) values ('chs000000000002', '狼牙', '', 'shewoqishui20080808@126.com', '华夏', '博客:http://www.cnblogs.com/fengpingfan') -- ----------------------------
-- Indexes structure for table Student
-- ---------------------------- -- ----------------------------
-- Primary Key structure for table Student
-- ----------------------------
ALTER TABLE [dbo].[Student] ADD PRIMARY KEY ([no])
GO

插入数据后,数据查询结果如下所示:

1.5、脚本执行

脚本执行结果如下所示:

1.6、参考文档:

官方文档:http://pymssql.org/en/stable/

接口文档:http://www.pymssql.org/en/latest/ref/pymssql.html

示例文档:http://www.pymssql.org/en/latest/pymssql_examples.html#

GitHub:https://github.com/pymssql/pymssql

Python002-操作MSSQL(Microsoft sql server)基础示例(二)的更多相关文章

  1. 无法用排他锁锁定该数据库,以执行该操作。 (Microsoft SQL Server,错误: 5030)

    ALTER DATABASE Test_DB modify name = Howie --更改数据库名 EXEC sp_renamedb 'Howie' , 'Howie_Wee' --更改数据库名 ...

  2. 【SQL server】SQL server基础(二)

    一.一些重要的SQL命令 SELECT - 从数据库中提取数据 UPDATE - 更新数据库中的数据 DELETE - 从数据库中删除数据 INSERT INTO - 向数据库中插入新数据 CREAT ...

  3. Microsoft SQL Server学习(二)

    目录 关于数据库的语法: 1.创建数据库 create database 数据库名 on primary (主文件属性(name,filename,size等)) -用逗号隔开次要主要文件和次要文件 ...

  4. Microsoft SQL Server学习(二)--数据库的语法

    关于数据库的语法 创建数据库 样例 名词概念 编写数据库代码的注意事项 关于文件语法 实例代码 关于数据库的语法: 1.创建数据库 create database 数据库名 on primary (主 ...

  5. 从 Microsoft SQL Server 迁移到 Oracle

    来源于:http://www.oracle.com/technetwork/cn/database/migration/sqlserver-095136-zhs.html Oracle SQL Dev ...

  6. MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”。操作系统错误 5:“5(拒绝访问。)”。 (Microsoft SQL Server,错误: 5120)

    MSSQL附加数据库时提示以下错误: 无法打开物理文件“***.mdf”.操作系统错误 5:“5(拒绝访问.)”. (Microsoft SQL Server,错误: 5120) ***** 解决方法 ...

  7. Cenots7下安装运行.NET Core、MicroSoft SQL Server 2019 preview 的基础实践

    一:概要 适应人群:.Net初学者.想了解.Net Core在Linux系统中的运行环境搭建者.初次且想在linux上应用.Net Core开发应用程序者: 基础技能:了解.NET基础开发技能者.有一 ...

  8. 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法

    无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问.)” (Microsoft SQL Server,错误: 5120)的解决方法   问题描述: 在附加数据库到sql server时,附 ...

  9. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  10. sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'。数据库 'my1' 正在使用该文件的解决方案

    对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQ ...

随机推荐

  1. 【原创】大叔问题定位分享(6)Dubbo monitor服务iowait高,负载高

    一 问题 Dubbo monitor所在服务器状态异常,iowait一直很高,load也一直很高,监控如下: iowait如图: load如图: 二 分析 通过iotop命令可以查看当前系统中磁盘io ...

  2. redis 资料

    redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to a ...

  3. @Transactional 无效原因

    在controller 上面使用  @Transactional 注解时候发现数据没有回滚,在执行完update 更新语句,事务直接就commit 了, 此时方法尚未执行结束,数据库数据已经更新了. ...

  4. 论文阅读笔记四十六:Feature Selective Anchor-Free Module for Single-Shot Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1903.00621 摘要 本文提出了基于无anchor机制的特征选择模块,是一个简单高效的单阶段组件,其可以结合特征金字塔嵌入到单阶段检测器中. ...

  5. [原创]基于Zynq Linux环境搭建(二)

    在此篇,我们编译UBOOT 解压: [#17#17:26:56 FPGADeveloper@ubuntu ~/Zybo_Demo]$tar zxvf *.tar.gz 在解压过程中出现下述问题 tar ...

  6. python设计模式---创建型之工厂模式

    # coding = utf-8 from abc import ABCMeta, abstractmethod # 简单工厂模式 class Animal(metaclass=ABCMeta): @ ...

  7. Scrapy Selectors 选择器

    0. 1.参考 <用Python写网络爬虫>——2.2 三种网页抓取方法  re / lxml / BeautifulSoup 需要注意的是,lxml在内部实现中,实际上是将CSS选择器转 ...

  8. spark actions 算子

    package action; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; imp ...

  9. LNMP一键安装包添加虚拟主机、删除虚拟主机及如何使用伪静态

    本文主要介绍LNMP一键安装包添加虚拟主机.删除虚拟主机及如何使用伪静态. 一.添加虚拟主机通俗点就是在VPS/服务商上添加一个网站(域名). 需要执行如下命令:/root/vhost.sh 执行后会 ...

  10. Servlet(七):session

    Session 学习:问题: Request 对象解决了一次请求内的不同 Servlet 的数据共享问 题,那么一个用户的不同请求的处理需要使用相同的数据怎么办呢?解决: 使用 session 技术. ...