python访问MS SqlServer(通过pyodbc)

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 
 5 import pyodbc
 6 
 7 
 8 class MSSQL:
 9     """
10     封装pyodbc
11     """
12 
13     def __init__(self,host,user,pwd,db='master', charset='utf8'):
14         self._host = host
15         self._user = user
16         self._pwd = pwd
17         self._db = db
18         self._charset = charset
19 
20     def __get_connect(self):
21         """
22         得到连接信息
23         返回: conn.cursor()
24         """
25         if not self._db:
26             raise(NameError,"没有设置数据库信息")
27         conn_info = 'DRIVER={SQL Server};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s' % (self._db, self._host, self._user, self._pwd)
28         self.conn = pyodbc.connect(conn_info, charset=self._charset)
29         cur = self.conn.cursor()
30         if not cur:
31             raise(NameError,"连接数据库失败")
32         else:
33             return cur
34 
35     def __exec_query(self,sql):
36         """
37         执行查询语句
38         返回的是一个包含tuple的list,list的元素是记录行,tuple的元素是每行记录的字段
39 
40         调用示例:
41                 ms = MSSQL(host="localhost",user="sa",pwd="123456",db="PythonWeiboStatistics")
42                 resList = ms.ExecQuery("SELECT id,NickName FROM WeiBoUser")
43                 for (id,NickName) in resList:
44                     print str(id),NickName
45         """
46         cur = self.__get_connect()
47         cur.execute(sql)
48         resList = cur.fetchall()
49 
50         #查询完毕后必须关闭连接
51         self.conn.close()
52         return resList
53 
54     def exec_query_tuple(self, sql):
55         """结果集以元组返回"""
56         return self.__exec_query(sql)
57     
58     def exec_query_dict(self, sql):
59         result = []
60         for row in self.__exec_query(sql):
61             result.append( dict([(desc[0], row[index]) for index, desc in enumerate(row.cursor_description)]) )
62         
63         return result
64 
65     def exec_nonquery(self,sql):
66         """
67         执行非查询语句
68 
69         调用示例:
70             cur = self.__GetConnect()
71             cur.execute(sql)
72             self.conn.commit()
73             self.conn.close()
74         """
75         cur = self.__get_connect()
76         cur.execute(sql)
77         self.conn.commit()
78         self.conn.close()
79         
80 
81 if __name__ == '__main__':
82     conn = MSSQL('192.168.1.124', 'sa', 'Password', 'Demo', 'GBK')
83     
84     print conn.exec_query_dict("select * from Staff where code=0001")

 

转载于:https://www.cnblogs.com/junejs/p/4220429.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值