问题:续接上一篇。说干咱就干呀,勤勤恳恳写程序呀!

目标:此篇开始进入正题了。为实现我们整个项目功能而开始实现各个子模块功能。首先实现第一篇列出的分步功能模块的第五步:

5、python连接SQL Server,读写数据

解决方案:查找python与SQL Server交互的相关资料,编写涉及的功能函数,并将其封装在一个通用的SQLHelper类中。这样方便使用和维护。

具体实践:

1、新建了一个类: SQLHelper.py。首行添加代码:import pymssql,引用 pymssql包。

2、初始化类时,初始化数据库服务名称,登录用户,登录密码,数据库名称。

def __init__(self, host, user, pwd, db_name):
self.host = host
self.user = user
self.pwd = pwd
self.db_name = db_name

3、获取连接数据库的连接信息,返回

def get_connect(self):
"""
得到连接信息
返回: conn.cursor()
"""
if not self.db_name:
Error_Message = "没有设置数据库信息"
raise (NameError, Error_Message)
try:
self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db_name,
charset="utf8")
cur = self.conn.cursor()
except Exception as e:
print(e)
Error_Message = "连接数据库失败"
if not cur:
Error_Message = "连接数据库失败"
raise (NameError, Error_Message)
else:
return cur

4、查询函数,无查询执行函数

def exec_query(self, sql):
"""
执行查询语句
返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段 调用示例:
ms = MSSQLHelper(host="localhost/MSSQL2008",user="sa",pwd="xxx",db_name="xxx")
list_data = ms.exec_query("select ID, UserName from dbo.Users")
for (ID, UserName) in list_data:
print str(ID),UserName
"""
cur = self.get_connect()
cur.execute(sql)
list_data = cur.fetchall() # 查询完毕后必须关闭连接
self.conn.close()
return list_data def exec_non_query(self, sql):
"""
执行非查询语句 调用示例:
ms = MSSQLHelper(host="localhost/MSSQL2008",user="sa",pwd="xxx",db_name="xxx")
ms.exec_query("insert into Users values('3','风清扬')") """
try:
cur = self.get_connect()
cur.execute(sql)
self.conn.commit()
self.conn.close()
return True
except Exception as e:
print(e)
Error_Message = e
return False

Python3实战系列之八(获取印度售后数据项目)的更多相关文章

  1. Python3实战系列之一(获取印度售后数据项目)

    问题:公司在印度开设生产工厂并在当地销售手机,生产.销售系统均由印度开发维护.对总部需要的售后数据,采用每日在ftp上提供一个.xlsx文件,给总部使用.总部需要将此数据导入到总部的销量统计系统中,以 ...

  2. Python3实战系列之七(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇开始进入正题了.为实现我们整个项目功能而开始实现各个子模块功能.首先实现第一篇列出的分步功能模块的第四步: 4.python读取excel ...

  3. Python3实战系列之九(获取印度售后数据项目)

    项目现状:已经部署在服务器上并正常运行了. 1.服务器上的部署 2.下载到服务器的文件列表 3.转存在到数据库SQL Server中的数据 项目总结:这次项目采用python来实现,刚开始还是有点担忧 ...

  4. Python3实战系列之六(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇我们试着把python程序打包成.exe程序.这样就可以在服务器上运行了.实现首篇计划列表功能模块的第三步: 3..exe文件能在服务器上 ...

  5. Python3实战系列之四(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇开始进入正题了.为实现我们整个项目功能而开始实现各个子模块功能.首先实现第一篇列出的分步功能模块的第一步: 1.python访问ftp,下 ...

  6. Python3实战系列之二(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:安装python和pycharm.要编写并运行python程序就需要电脑有开发工具和运行环境,所以此篇就是安装编辑和运行python程序的软件 ...

  7. Python3实战系列之五(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:此篇我们试着把python程序打包成.exe程序.这样就可以在服务器上运行了.实现首篇计划列表功能模块的第二步: 2.将python程序转为 ...

  8. Python3实战系列之三(获取印度售后数据项目)

    问题:续接上一篇.说干咱就干呀,勤勤恳恳写程序呀! 目标:实现第一个python程序的“Hello world!” 解决方案:新建一个项目Test,创建一个Test.py文件.在文件中实现打印出“He ...

  9. memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程

    1.1.1. 新建Item分配内存过程 1:快速定位slab classid,先计算Item长度 key键长+flag+suffix(16字节)+value值长+结构大小(32字节),如90byte ...

随机推荐

  1. G1回收算法

    待完善...... 参考: https://mp.weixin.qq.com/s?__biz=MzIxMjE5MTE1Nw==&mid=2653193390&idx=2&sn= ...

  2. NodeJs中类定义及类使用

    1.首先定义类Point,文件名为point.class.js: // 定义类 class Point { //构造函数 constructor(x, y) { this.x = x;//类中变量 t ...

  3. 会话保持及Form表单

    1,cookie技术视图views里面:def index(request): #获取请求中的cookie num = request.COOKIES.get('num') if num: num = ...

  4. percona-toolkit(pt-online-schema-change)工具包的安装和使用

    1.下载和安装percona toolkit的包 #yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/ ...

  5. Percona XtraDB Cluster Strict Mode(PXC 5.7)

    在Percona XtraDB Cluster集群架构中,为了避免多主节点导致的数据异常,或者说一些不被支持的特性引发的数据不一致的情形,PXC集群可以通过配置pxc_strict_mode这个变量来 ...

  6. Vue-cli3.0开发笔记

    安装 npm install -g @vue/cli # OR yarn global add @vue/cli 版本为3.X vue --version 创建项目 vue create hello- ...

  7. jdbc与TiDB数据库交互的过程

    以下是使用jdbc操作TiDB数据库,得到的交互过程和指令的说明 ==>代表发送给数据库的指令 // 加载驱动程序Class.forName(driver); // 连接数据库 Connecti ...

  8. Tools:apache部署https服务

    转自:https://www.cnblogs.com/ccccwork/p/6529367.html 1.要搭建https,必须要具备的东西 1.超文本传输协议httpd(apache)和ssl模块( ...

  9. js跨域传值,兼容ie8以上

    js跨域传值,兼容ie8以上 事先说明,此方法并不支持ie8,如果想要支持ie8的话,需要用这种思路(来自微软): if (window.addEventListener) { window.addE ...

  10. Android向系统日历中添加日程事件

    转自Android向系统日历中添加日程事件 总结 在项目开发中,我们有预约提醒.定时提醒需求时,可以使用系统日历来辅助提醒: 通过向系统日历中写入事件.设置提醒方式(闹钟),实现到时间自动提醒的功能: ...