pull/32/merge
Apex Liu 2017-03-22 14:16:41 +08:00
parent 1d665769ee
commit ba44d6c951
3 changed files with 606 additions and 620 deletions

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,7 @@ class TPDatabase:
# 看看数据库中是否存在指定的数据表(如果不存在,可能是一个空数据库文件),则可能是一个新安装的系统
# ret = self.query('SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}account";'.format(self._table_prefix))
ret = self.is_table_exists('group')
ret = self.is_table_exists('{}group'.format(self._table_prefix))
if ret is None or not ret:
# if ret is None or ret[0][0] == 0:
log.w('database need create.\n')
@ -81,41 +81,19 @@ class TPDatabase:
self.need_upgrade = True
return True
# DO TEST
self.alter_table('ts_account', [['account_id', 'id'], ['account_type', 'type']])
return True
# def init_sqlite(self, db_file):
# self._table_prefix = 'ts_'
# self._conn_pool = TPSqlitePool(db_file)
#
# if not os.path.exists(db_file):
# log.w('database need create.\n')
# self.need_create = True
# return
#
# # 看看数据库中是否存在指定的数据表(如果不存在,可能是一个空数据库文件),则可能是一个新安装的系统
# # ret = self.query('SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}account";'.format(self._table_prefix))
# ret = self.is_table_exists('group')
# if ret is None or not ret:
# # if ret is None or ret[0][0] == 0:
# log.w('database need create.\n')
# self.need_create = True
# return
#
# # 尝试从配置表中读取当前数据库版本号(如果不存在,说明是比较旧的版本了)
# ret = self.query('SELECT `value` FROM {}config WHERE `name`="db_ver";'.format(self._table_prefix))
# if ret is None or 0 == len(ret) or ret[0][0] < TELEPORT_DATABASE_VERSION:
# log.w('database need upgrade.\n')
# self.need_upgrade = True
def is_table_exists(self, table_name):
"""
判断指定的表是否存在
@param table_name: string
@return: None or Boolean
"""
# return self._conn_pool.is_table_exists(table_name)
if self.db_source['type'] == self.DB_TYPE_SQLITE:
ret = self.query('SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}{}";'.format(self._table_prefix, table_name))
ret = self.query('SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}";'.format(table_name))
if ret is None:
return None
if len(ret) == 0:
@ -126,6 +104,7 @@ class TPDatabase:
elif self.db_source['type'] == self.DB_TYPE_MYSQL:
return None
else:
log.e('Unknown database type.\n')
return None
def query(self, sql):
@ -149,18 +128,66 @@ class TPDatabase:
else:
return False
def alter_table(self, table_names, field_names=None):
"""
修改表名称及字段名称
table_name: 如果是string则指定要操作的表如果是list则第一个元素是要操作的表第二个元素是此表改名的目标名称
fields_names: 如果为None则不修改字段名否则应该是一个list其中每个元素是包含两个str的list表示将此list第一个指定的字段改名为第二个指定的名称
@return: None or Boolean
"""
if self.db_source['type'] == self.DB_TYPE_SQLITE:
if not isinstance(table_names, list) and field_names is None:
log.w('nothing to do.\n')
return False
if isinstance(table_names, str):
old_table_name = table_names
new_table_name = table_names
elif isinstance(table_names, list) and len(table_names) == 2:
old_table_name = table_names[0]
new_table_name = table_names[1]
else:
log.w('invalid param.\n')
return False
if isinstance(field_names, list):
for i in field_names:
if not isinstance(i, list) or 2 != len(i):
log.w('invalid param.\n')
return False
if field_names is None:
# 仅数据表改名
return self.exec('ALTER TABLE `{}` RENAME TO `{}`;'.format(old_table_name, new_table_name))
else:
# sqlite不支持字段改名所以需要通过临时表中转一下
# 先获取数据表的字段名列表
ret = self.query('SELECT * FROM `sqlite_master` WHERE `type`="table" AND `name`="{}";'.format(old_table_name))
log.w('-----\n')
log.w(ret)
log.w('\n')
# 先将数据表改名,成为一个临时表
# tmp_table_name = '{}_sqlite_tmp'.format(old_table_name)
# ret = self.exec('ALTER TABLE `{}` RENAME TO `{}`;'.format(old_table_name, tmp_table_name))
# if ret is None or not ret:
# return ret
pass
elif self.db_source['type'] == self.DB_TYPE_MYSQL:
log.e('mysql not supported yet.\n')
return False
else:
log.e('Unknown database type.\n')
return False
class TPDatabasePool:
def __init__(self):
self._locker = threading.RLock()
self._connections = dict()
# def is_table_exists(self, table_name):
# _conn = self._get_connect()
# if _conn is None:
# return None
# return self._is_table_exists(_conn, table_name)
def query(self, sql):
_conn = self._get_connect()
if _conn is None:
@ -187,9 +214,6 @@ class TPDatabasePool:
def _do_connect(self):
return None
# def _is_table_exists(self, conn, table_name):
# return None
def _do_query(self, conn, sql):
return None
@ -209,14 +233,6 @@ class TPSqlitePool(TPDatabasePool):
log.e('[sqlite] can not connect, does the database file correct?')
return None
# def _is_table_exists(self, conn, table_name):
# ret = self._do_query(conn, 'SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}{}";'.format(self._table_prefix, table_name))
# # ret = self.query('SELECT COUNT(*) FROM `sqlite_master` WHERE `type`="table" AND `name`="{}{}";'.format(self._table_prefix, table_name))
# if ret is None or ret[0][0] == 0:
# return False
# else:
# return True
def _do_query(self, conn, sql):
cursor = conn.cursor()
try:

View File

@ -1,30 +0,0 @@
/*! ywl_log v1.0.1, (c)2015 eomsoft.net */
"use strict";
var ywl_log_analysis = {
43:log_process_get_process_by_name_43,
61:log_analysis_file_list_61
};
function log_analysis_file_list_61(data) {
var message = data;
var _obj = JSON.parse(data);
var _file_path = _obj['path'];
if (_file_path != undefined){
message = _file_path;
}
return message;
}
function log_process_get_process_by_name_43(data) {
var message = data;
var _obj = JSON.parse(data);
var _process_name = _obj['Name'];
if (_process_name != undefined){
message = _process_name;
}
return message;
}