文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>每日学习笔记(10)

每日学习笔记(10)

时间:2010-09-28  来源:Phinecos(洞庭散人)

记录下自己日常工作中经常使用的几个小工具类

1,python部分,一个日志类,一个数据库操作类。

代码 ###################
#日志辅助类
#################
class Logger:
    LOG_DEBUG= "debug"
    LOG_DEBUG_FILE = "/tmp/debug.log"
    LOG_RELEASE = "release"
    LOG_RELEASE_FILE = "/tmp/release.log"

    def __init__(self, log_type):
        self._logger = logging.getLogger(log_type)
        if log_type == Logger.LOG_DEBUG:
            self._logFile = Logger.LOG_DEBUG_FILE
        elif log_type == Logger.LOG_RELEASE:
            self._logFile = Logger.LOG_RELEASE_FILE
        handler = logging.FileHandler(self._logFile)
        if log_type == Logger.LOG_DEBUG:
            formatter = logging.Formatter('%(asctime)s ********* %(message)s')
        else:
            formatter = logging.Formatter('%(message)s')
        handler.setFormatter(formatter)
        self._logger.addHandler(handler)
        self._logger.setLevel(logging.INFO)

    def log(self, msg):
        if self._logger is not None:
            self._logger.info(msg)

 

代码 ###################
#数据库辅助类
#################
class DbHelper:
    def __init__(self, strHost, strUser, strPassword, strDataBase):
        self._conn = None #数据库连接对象
        self._host = strHost
        self._user = strUser
        self._password = strPassword
        self._database = strDataBase

    def connect(self):#连接数据库
        try:
            self._conn = MySQLdb.connect(host = self._host, user = self._user, passwd = self._password, db = self._database, charset = "utf8", use_unicode = True)
        except:
            self._conn = None

    def isConnected(self):#数据库连接是否成功
        return self._conn != None

    def getDataBaseName(self):#返回数据库名称
        return self._database

    def insert(self, sql):#增加记录
        new_id = -1
        if sql != "":
            cursor = self._conn.cursor()
            try:
                try:
                    cursor.execute("set autocommit = 1")
                    cursor.execute(sql)
                    new_id = cursor.lastrowid
                except:
                    new_id = -1
            finally:
                cursor.close()
        return new_id

    def query(self, sql):#删除记录或修改记录
        if sql != "":
            cursor = self._conn.cursor()
            try:
                try:
                    cursor.execute("set autocommit = 1")
                    cursor.execute(sql)
                except:
                    pass
            finally:
                cursor.close()

    def fetch_rows(self, sql): #获取多个记录行
        result = None
        if sql != "":
            cursor = self._conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
            try:
                try:
                    cursor.execute(sql)
                    result = cursor.fetchall()
                except:
                    result = None
            finally:
                cursor.close()
        return result

    def fetch_one(self, sql):
        result = None
        if sql != "":
            cursor = self._conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)
            try:
                try:
                    cursor.execute(sql)
                    result = cursor.fetchone()
                except:
                    result = None
            finally:
                cursor.close()
        return result

    def __del__(self):#对象析构时执行关闭动作
        self.close()

    def close(self):#关闭数据库连接
        if self._conn != None:
            self._conn.close()
            self._conn = None

 2,php部分,一个数据库操作类。

代码 class db_mysql 
{
    private $connid = FALSE;

    function __construct($dbhost, $dbuser, $dbpwd, $dbname = null) {
        $this->sql_connect($dbhost, $dbuser, $dbpwd, $dbname);
    }

    function sql_connect($dbhost, $dbuser, $dbpwd, $dbname = null) {
        if ($this->connid) {
            mysql_close($this->connid);
        }
        if (!$this->connid = mysql_connect($dbhost, $dbuser, $dbpwd)) {
            $this->handleError('Can not connect to MySQL server. host: ' . $dbhost . ", user:" . $dbuser.", pwd:".$dbpwd);
        }
        mysql_query("set character_set_connection=utf8, character_set_results=utf8, character_set_client=binary", $this->connid);
        if ($dbname) {
            $this->sql_select_db($dbname);
        }
    }

    function sql_select_db($dbname) {
        if (!mysql_select_db($dbname, $this->connid)) {
            $this->handleError('Cannot use database ' . $dbname);
        }
    }

    function sql_query($sql) {
        if (!($res = mysql_query($sql, $this->connid))) {
            $this->handleError('MySQL Query Error', $sql);
        }
        return $res;
    }

    function sql_insert($sql) {
        $this->sql_query($sql);
        return mysql_insert_id();
    }

    function sql_fetch_rows($sql, $result_type = MYSQL_ASSOC) {
        $res = $this->sql_query($sql);
        $ret = array();
        while ($r = mysql_fetch_array($res, $result_type)) {
            $ret[] = $r;
        }
        mysql_free_result($res);
        return $ret;
    }

    function sql_fetch_one($sql, $result_type = MYSQL_ASSOC) {
        $res = $this->sql_query($sql);
        $ret = mysql_fetch_array($res, $result_type);
        mysql_free_result($res);
        return $ret;
    }

    function sql_fetch_one_cell($sql) {
        $ret = $this->sql_fetch_one($sql, MYSQL_NUM);
        return $ret[0];
    }

    function sql_fetch_column($sql, $keyField, $result_type = MYSQL_ASSOC) {
        $res = $this->sql_query($sql);
        $ret = array();
        while ($r = mysql_fetch_array($res, $result_type)) {
            if (isset($r[$keyField])) {
                $ret[] = $r[$keyField];
            }
        }
        mysql_free_result($res);
        return $ret;
    }

    function sql_fetch_singlemap($sql, $keyField, $result_type = MYSQL_ASSOC) {
        $res = $this->sql_query($sql);
        $ret = array();
        while ($r = mysql_fetch_array($res, $result_type)) {
            if (isset($r[$keyField])) {
                $ret[$r[$keyField]] = $r;
            }
        }
        mysql_free_result($res);
        return $ret;
    }

    function sql_fetch_multimap($sql, $keyField, $result_type = MYSQL_ASSOC) {
        $res = $this->sql_query($sql);
        $ret = array();
        while ($r = mysql_fetch_array($res, $result_type)) {
            if (isset($r[$keyField])) {
                $ret[$r[$keyField]][] = $r;
            }
        }
        mysql_free_result($res);
        return $ret;
    }

    function handleError($message = '', $sql = '') {
        $err = empty($sql) ? '' : 'MySQL Query:' . $sql;
        $err .= 'MySQL Error:' . mysql_error();
        $err .= ', MySQL Errno:' . mysql_errno();
        $err .= ', Message:' . $message;
        error_log($err);
    }

    function __destruct() {
        if ($this->connid) {
            mysql_close($this->connid);
        }
    }
}

 

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载