1. 程式人生 > 其它 >python-查詢資料庫-匹配資料

python-查詢資料庫-匹配資料

技術標籤:pythondatapythonmysqlsql資料庫

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import argparse
import os
import commands
import hashlib 
import subprocess
import sys
import shutil
import MySQLdb
import MySQLdb.cursors
reload(sys) 
sys.setdefaultencoding( "utf-8" )

class Log:
    @staticmethod
    def e(msg):
        print(Log.red + '[x]:' + msg + Log.end)
    @staticmethod
    def w(msg):
        print(Log.yellow + '[!]:' + msg + Log.end)
    @staticmethod
    def i(msg):
        print(Log.green + '[+]:' + msg + Log.end)
    @staticmethod
    def t(msg):
        print(Log.blue + '[-]:' + msg + Log.end)
    red = '\033[1;31m'
    green = '\033[1;32m'
    yellow = '\033[1;33m'
    blue = '\033[1;34m'
    end = '\033[00m'

class get_database_info(object):

    def connectdb(self):
        Log.w("start to connect database")  
        #本地連線
        db = MySQLdb.connect(host='ip地址', port=埠號, user='使用者', passwd='密碼', db='資料庫名稱', charset='latin1')
        Log.e("connect success")
        return db
    
    def select_table(self,table,db):
        cursor = db.cursor()
        sql='SELECT id,name1,name2 FROM '+table  
        cursor.execute(sql)
        #列印資料
        Log.w("select database, results list:")
        results = cursor.fetchall()
        name1_info=dict()
        name2_info=dict()
        if results:  
            for rec in results:  
                print rec[0],rec[1],rec[2]
                name1_info.update({rec[1]:rec[0]})
                name2_info.update({rec[1]:rec[2]})
        Log.w("Get name1_info ALIAS:")
        for key,values in  name1_info.items():
            print str(key)+"="+str(values)
        Log.w("Get name2_info ALIAS:")
        for key,values in  name2_info.items():
            print str(key)+"="+str(values)
        cursor.close()
        return name1_info,name2_info
    
    def invokedb(self):
        #連線資料庫
        db = self.connectdb()
        product_table="表名"
        info=self.select_table(product_table,db)
        #關閉資料庫
        db.close()
        return info
    
    #匹配查詢到的具體值
    def match(self,info,manufacturer):
        marketcode=info[manufacturer]
        Log.w("get info of "+manufacturer+":")
        print manufacturer+"="+str(marketcode)
        return marketcode

def parserParameter():
    parser = argparse.ArgumentParser(description='test!')
    required = parser.add_argument_group('required arguments')
    parser.add_argument('--code', required=True, help='code') 
    args = parser.parse_args()
    return args

if __name__ == '__main__':

    ### 解析引數
    args=parserParameter()
    code=args.code

    #初始化類
    get_database_info = get_database_info()
    name1_info,name2_info=get_database_info.invokedb()
    print name1_info,name2_info
    #匹配具體值
    name1=get_database_info.match(name1_info,code)
    name1=str(name1)
    Log.i("vendor="+vendor+"    \nname1:"+name1)
    name2=get_database_info.match(name2_info,code)
    name2=str(name2)
    Log.i("vendor="+vendor+"    \nname2:"+name2)