*.pyc
*.swp
*.sqlite3
+*.bak
--- /dev/null
+# -*- coding: utf-8 -*-
+
+# \82¨\8eç\82è\83X\83L\83\8b\82ÌSeed\93Á\92è\83N\83\89\83X
+# 2013/12/04 written by kei9
# -*- coding: utf-8 -*-
# model\83\82\83W\83\85\81[\83\8b\82Ìimport\97p\83X\83N\83\8a\83v\83g
+# 2013/12/04 written by kei9
from db_accessor import DataBaseAccessor
from db_generator import DataBaseGenerator
+from db_supports import DB_FILE_NAME
return u" where " + u" and ".join(valid_eqls)
else:
return ""
+
+ def get_where_in_sql(self, remove_where=False):
+ u""" SQLのWhere文に変換する(IN結合) """
+ if len(self.skill_id_list) >= 1:
+ uni_list = [u"{0}".format(x) for x in self.skill_id_list if x is not None]
+ sql = u" {col} IN({in_phrase})".format(
+ col=db_supports.MIN_MAX_COL_SKILL_ID,
+ in_phrase=u",".join(uni_list))
+
+ if remove_where:
+ return sql
+ else:
+ return u" where" + sql
+ else:
+ return ""
+
import db_supports
from amuletskillsholder import AmuletSkillsHolder
from randomseedsholder import RandomSeedsHolder
+from sufficientsholder import SufficientsHolder
class DataBaseAccessor(object):
u""" this is access class to database """
else:
return seed_set
+ def select_minmax_from_skill_ids(self, amulet_id, skill_ids):
+ u""" お守りのidとスキルidのリストから、スキルIDと取りうるスキルの最大最小値の辞書を得る
+ return dict{skill_id:(min1, max1, min2, max2)}
+ """
+ minmax_table = self._amulet_id2minmax_dict[amulet_id]
+ amulet_skill = AmuletSkillsHolder(skill_ids)
+ result_dict = {}
+ if amulet_skill.is_empty() is False:
+ sql = db_supports.MIN_MAX_TABLE_SELECT_ALL_SQL.format(table_name=minmax_table) + amulet_skill.get_where_in_sql()
+ self._cursor.execute(sql)
+
+ for row in self._cursor.fetchall():
+ result_dict[row[0]] = tuple(row[1])
+ return result_dict
+
+ def select_threshold_from_sufficient(self, amulet_id, sufficient_vals):
+ u""" お守りのidと充足値のリストから、充足値とスロットごとの判定値の辞書を得る
+ return dict({sufficient_val:(slot1_th, slot2_th, slot3_th)})
+ """
+ suff_table = self._amulet_id2suff_dict[amulet_id]
+ amulet_skill = SufficientsHolder(sufficient_vals)
+ result_dict = {}
+ if amulet_skill.is_empty() is False:
+ sql = db_supports.SUFFICIENT_TABLE_SELECT_ALL_SQL.format(table_name=suff_table) + amulet_skill.get_where_in_sql()
+ self._cursor.execute(sql)
+
+ for row in self._cursor.fetchall():
+ result_dict[row[0]] = tuple(row[1])
+ return result_dict
+
def select_skills_from_seeds(self, seed_set):
u""" get amulet id to (random_seed to skill ids dict) dict,
and rendom_seed to slot value dict
self._connect.commit()
if __name__ == "__main__":
- #db = DataBaseGenerator(OutputDBFileName)
+ #db = DataBaseGenerator(DB_FILE_NAME)
db = DataBaseGenerator("test.sqlite3")
#db = DataBaseGenerator() # for memory
db.generate_db()
# --- filenames ---
ZIP_FILE = "data.zip"
-DATA_DIRECTORY = "data"
-OUTPUT_DB_FILE_NAME = "OmamoriMH4.sqlite3"
+DB_FILE_NAME = "OmamoriMH4.sqlite3"
SKILL_FILE_NAME = "skill.csv"
AMULET_FILE_NAME = "amulet.csv"
MIN_MAX_FILE_NAME = "minmax.csv"
u""" SQLのWhere文に変換する(IN句) """
if len(self.seed_set) >= 1:
uni_list = [u"{0}".format(x) for x in self.seed_set]
- sql = u"{col} IN({in_phrase})".format(
+ sql = u" {col} IN({in_phrase})".format(
col=db_supports.SECOND_COL_RANDOM_SEED,
in_phrase=u",".join(uni_list))
if remove_where:
return sql
else:
- return u" where " + sql
+ return u" where" + sql
else:
return ""
--- /dev/null
+# -*- coding: utf-8 -*-
+
+# sufficient valueを保持するクラス
+# 2013/12/04 written by kei9
+
+import db_supports
+
+class SufficientsHolder(object):
+ u""" ランダムのSeed値を保持するクラス """
+ def __init__(self, sufficient_list):
+ u""" sufficient_list: list of sufficient
+ """
+ self.sufficient_set = set(sufficient_list)
+
+ def get_where_sql(self, remove_where=False):
+ u""" SQLのWhere文に変換する(IN句) """
+ if len(self.sufficient_set) >= 1:
+ uni_list = [u"{0}".format(x) for x in self.sufficient_set]
+ sql = u" {col} IN({in_phrase})".format(
+ col=db_supports.SUFFICIENT_COL_SUFFICIENT_VALUE,
+ in_phrase=u",".join(uni_list))
+
+ if remove_where:
+ return sql
+ else:
+ return u" where" + sql
+ else:
+ return ""
+
+