Python 自定义数据库连接类

创建一个配置文件:E:/mypy/mycnf.txt

[mssql]
host = HZC
user = kk
pwd = kk
dbname = DemoDB

数据库连接类:E:/mypy/MSSQL.py

# -*- coding: utf-8 -*-  
# python 3.5

import sys
import pymssql
import ConfigParser
sys.path.append(r'E:/mypy')

#从文件系统读取配置文件
cf = ConfigParser.ConfigParser()
cf.read("mycnf.txt")
host = cf.get("mssql", "host")
user = cf.get("mssql", "user")
pwd = cf.get("mssql", "pwd")
db = cf.get("mssql", "dbname")

class MSSQL:
    #def __init__(self,host=None,user=None,pwd=None,db=None):
    def __init__(self):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db
        
        self._conn = self.GetConnect()
        if(self._conn):
            self._cur = self._conn.cursor()


    #连接数据库
    def GetConnect(self):
        conn = False
        try:
            conn = pymssql.connect(
                host=self.host,
                user=self.user,
                password=self.pwd,
                database =self.db
            )
        except Exception as err:
            print("连接数据库失败, %s" % err)
        else:
            return conn


    #执行查询
    def ExecQuery(self,sql):
        res = ""
        try:
            self._cur.execute(sql)
            res = self._cur.fetchall()
        except Exception as err:
            print("查询失败, %s" % err)
        else:
            return res


    #执行非查询类语句
    def ExecNonQuery(self, sql):
        flag = False
        try:
            self._cur.execute(sql)
            self._conn.commit()
            flag = True
        except Exception as err:
            flag = False
            self._conn.rollback()
            print("执行失败, %s" % err)
        else:
            return flag


    #获取连接信息
    def GetConnectInfo(self):
        print( "连接信息:" )
        print( "服务器:%s , 用户名:%s , 数据库:%s " % (self.host,self.user,self.db))



    #关闭数据库连接
    def Close(self):
        if(self._conn):
            try:
                if(type(self._cur)=='object'):
                    self._cur.close()
                if(type(self._conn)=='object'):
                    self._conn.close()
            except:
                raise("关闭异常, %s,%s" % (type(self._cur), type(self._conn)))  


执行SQL:

# -*- coding: utf-8 -*-  
# python 3.5

import sys
sys.path.append(r'E:/mypy') 
from MSSQL import MSSQL;

sql = "select oid,name,craetedate from tab;"
ms = MSSQL()
resList = ms.ExecQuery(sql)
for row in resList:
    print("oid: %d\tname: %s\tcraetedate: %s" % (row[0],row[1],row[2]))

#ms.ExecNonQuery(sql)
#ms.GetConnectInfo()
#ms.Close()

参考:

https://www.cnblogs.com/gmark/archive/2012/09/09/2678037.html

https://www.cnblogs.com/feeland/p/4514771.html


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值