操作mysql,获取字段属性值,并输出表数据

import pymysql
import decimal
import datetime
import json
import LogPackage
import logging
import os

logs=LogPackage.Logger(filename='log.txt',path=1,driver_path=os.getcwd())
logs.Log()
logger=logging.getLogger(__name__)


__description__='Finding the data in the same database'

class DecimalEncoder(json.JSONEncoder):
    def default(self,obj):
        if isinstance(obj,decimal.Decimal):#decimal类型转换,使其可以转换为json格式数据
            return float(obj)
        elif isinstance(obj,datetime.datetime):#datetime类型转换,使其可以转换为json格式数据
            return obj.__str__()
        return super(DecimalEncoder,self).default(obj)

class RUNSQL(object):
    def run_sql(self):
        db=pymysql.connect(host='服务器地址',port=3306,user='用户名',password='密码',db='数据库名称',charset='utf8')
        self.cursor1=db.cursor()
        self.cursor2=db.cursor()

        self.cursor1.execute('desc osc_order;')#获取字段属性默认值
        self.cursor2.execute("SELECT * FROM osc_order WHERE customer_id='47001930' and status_name in('订单已收已付') order by created_at DESC")

        db.close()

    def sql_test(self):
        self.run_sql()
        index=self.cursor1.fetchall()
        print(index)
        result=[]
        row={}
        for res in self.cursor2.fetchall():
            for i in range(len(index)):
                row[index[i][0]]=res[i]
            result.append(row)
        # print(result)
        for line in result:
            print(line)
        print(json.dumps(result,cls=DecimalEncoder,indent=4,ensure_ascii=False,sort_keys=True))#输出的是字符串
        # for data in self.cursor.fetchall():
        #     print(data)


if __name__=='__main__':
    s=RUNSQL()
    s.sql_test()

猜你喜欢

转载自blog.csdn.net/lssrain/article/details/80491512
今日推荐