前文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. VMware的NAT网络模式

    参考链接:https://www.cnblogs.com/linjiaxin/p/6476480.html 图例:

  2. Spring扩展自定义的XML标签

    在网上搜了许多,感觉不够全面,就找了官方文档,下面记录如何找到对应的文档进入 网上许多博客都是以dateformat为实例进行编写的,通过官方的foo,能够学到更多的东西,下面贴一段代码,在官方示例上 ...

  3. java 读取本地文件并转换为byte数组

    private byte[] InputStream2ByteArray(String filePath) throws IOException { InputStream in = new File ...

  4. 备份还原数据数据库(动态IP版)

    使用方法: 1.首次使用双击export.bat进行备份数据库:2.以后每次使用双击setup.bat进行还原数据库: 备注:如果数据库内容有变,需要重新执行export.bat进行备份数据库. ex ...

  5. [原创]基于Zynq Linux环境搭建资源

    链接: https://pan.baidu.com/s/1JwNfLY50eoMr2_UO3lAfZw 密码: j8ex 链接: https://pan.baidu.com/s/1JwNfLY50eo ...

  6. 一起学Hive——总结常用的Hive优化技巧

    今天总结本人在使用Hive过程中的一些优化技巧,希望给大家带来帮助.Hive优化最体现程序员的技术能力,面试官在面试时最喜欢问的就是Hive的优化技巧. 技巧1.控制reducer数量 下面的内容是我 ...

  7. Django & JavaScript 用Ajax实现JSON数据的请求和响应

    [描述] 1.Server端定义了两个字段:Article.title 和 Article.content 2.客户端用JavaScript Ajax异步加载请求服务器的JSON数据 效果是点击按钮从 ...

  8. stm32位操作详解

    stm32位操作详解 STM32位操作原理 思想:把一个比特分成32位,每位都分配一个地址,这样就有32个地址,通过地址直接访问. 位操作基础 位运算 位运算的运算分量只能是整型或字符型数据,位运算把 ...

  9. udf提权

    0x00前言: udf提权是通过数据库来实现获取目标的管理员的shell,来达到从低权限提权到高权限 0x01什么是udf: udf(Userdefined function)是用户自定义函数 在my ...

  10. 设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识 zz

    原文地址:http://www.vonwei.com/post/UniqueDeviceIDforWindows.html 唯一的标识一个设备是一个基本功能,可以拥有很多应用场景,比如软件授权(如何保 ...