Python +SQL Server 框架及返回结果处理

Python + SQL Server 返回结果处理
如何搭建python + sql server 框架以及对数据库查结果值的使用。

config 文件夹下 sqlconfig.ini

[sqlserver]
host = 123.123.0.123
user = user-name
pwd = password
db = DB-name

config 文件夹下sqlconfig.py

import configparser
import os

_ini_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'sqlconfig.ini').replace('\\', '/')
_conf = configparser.ConfigParser()
_conf.read(_ini_path, encoding='utf-8')
host = _conf.get('sqlserver', 'host')
user = _conf.get('sqlserver', 'user')
pwd = _conf.get('sqlserver', 'pwd')
db = _conf.get('sqlserver', 'db')
_conf.clear()

common文件夹下sqlclient.py

from configs.sqlconfig import *
import pymssql
import logging

class SqlClient:
    def __init__(self, host=host, user=user, pwd=pwd, db=db):
        self.host = host
        self.user = user
        self.pwd = pwd
        self.db = db        # 默认连接VATVerification8020数据库

    def __getConnect(self):
        """建立SQL连接"""
        try:
            self.conn = pymssql.connect(host=self.host, user=self.user, password=self.pwd, database=self.db, charset="utf8")
            cur = self.conn.cursor()
        except pymssql.OperationalError:
            pass
        except Exception as e:
            _logger.error('444:' % e)
        else:
            return cur

    def query(self, sql):
        """
        :param sql: 查询语句
        :return: 查询结果
        """
        cur = self.__getConnect()
        try:
            cur.execute(sql)
            resList = cur.fetchall()
            self.conn.close()
            _logger.info('000')
            return resList
        except AttributeError:
            logging.error('1:%s' % 'connect sqlserver failed! SQL:{sql}'.format(sql=sql))
        except pymssql.ProgrammingError:
            logging.error('2:%s' % 'db error! SQL:{sql}'.format(sql=sql))


    def executeSQL(self, sql):
        """
        :param sql: 非查询语句
        :return: None
        """
        cur = self.__getConnect()
        cur.execute(sql)
        self.conn.commit()
        self.conn.close()

_sqlClient = SqlClient()

if __name__ == "__main__":
    result = _sqlClient.query("select name from user")
    print(type(result))
    print(result[1])
    print(type(result[1]))
    rr=  list(str(x) for (x,) in result)
    print(rr[1])

执行结果:
在这里插入图片描述

从结果来看,sql查询的结果是个list,每个结果值是个 元组(tuple),如果想取具体的值可以使用 list(str(x) for (x,) in result) 对返回结果进行转换,把list的元素转换成str,在组成一个list.然后就可以对list 的数据进行对比…等其他操作啦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值