12-31-2013, 03:52 PM
В бд большая куча всего. Но пока на глаза попадается больше "мусора". Модели, анимация, какая то фигня...
Найти в этой каше статы мобов\шмота\прочего пока не удаётся.
Небольшой скриптик, который проставляет текст из таблицы локализации по всем остальным. На нескольких таблицах не отрабатывает и адски медленный (курсорами бегать некошерно, но что-то под sqlite ничего более приличного не нашёл). Гораздо лучше сконвертировать во что нибудь вроде MySQL и сделать то же самое одним запросом за пару минут.
[SRC="python"]import sqlite3
import sys
if (len(sys.argv) < 2):
print("usage dblocale.py locale(ko|ru|other in db) <dbname default gamedb.sqlite3>")
sys.exit()
dbname = "gamedb.sqlite3"
if (len(sys.argv) >= 3):
dbname = sys.argv[2]
print("connect to: %s" % dbname)
conn = sqlite3.connect(dbname)
cur_tbname = conn.cursor()
print("begin tranzaction")
conn.execute('BEGIN TRANSACTION')
print("select table names")
cur_tbname.execute('SELECT tbl_name from localized_texts GROUP BY tbl_name')
cur_fieldname = conn.cursor()
cur_data = conn.cursor()
for record in cur_tbname:
print("process table %s" % record[0])
param = (record[0],)
cur_fieldname.execute('SELECT tbl_column_name from localized_texts WHERE tbl_name = ? GROUP BY tbl_column_name', record)
for field_rec in cur_fieldname:
print ("\t%s"% field_rec[0])
cur_data.execute('SELECT %s, idx FROM localized_texts WHERE tbl_name="%s" AND tbl_column_name="%s"' % (sys.argv[1], record[0], field_rec[0]))
query = 'UPDATE %s SET %s = ? WHERE id = ?' %(record[0], field_rec[0])
for text_rec in cur_data:
try:
conn.execute(query, text_rec)
except sqlite3.OperationalError:
print ("bad query: %s; params: (%s, %s)" % (query, record[0], field_rec[0]))
print("COMMIT")
conn.execute('COMMIT')
print("end all operate")
[/SRC]
У меня он уже полтора часа пытается справиться с этой базой
Найти в этой каше статы мобов\шмота\прочего пока не удаётся.
Небольшой скриптик, который проставляет текст из таблицы локализации по всем остальным. На нескольких таблицах не отрабатывает и адски медленный (курсорами бегать некошерно, но что-то под sqlite ничего более приличного не нашёл). Гораздо лучше сконвертировать во что нибудь вроде MySQL и сделать то же самое одним запросом за пару минут.
[SRC="python"]import sqlite3
import sys
if (len(sys.argv) < 2):
print("usage dblocale.py locale(ko|ru|other in db) <dbname default gamedb.sqlite3>")
sys.exit()
dbname = "gamedb.sqlite3"
if (len(sys.argv) >= 3):
dbname = sys.argv[2]
print("connect to: %s" % dbname)
conn = sqlite3.connect(dbname)
cur_tbname = conn.cursor()
print("begin tranzaction")
conn.execute('BEGIN TRANSACTION')
print("select table names")
cur_tbname.execute('SELECT tbl_name from localized_texts GROUP BY tbl_name')
cur_fieldname = conn.cursor()
cur_data = conn.cursor()
for record in cur_tbname:
print("process table %s" % record[0])
param = (record[0],)
cur_fieldname.execute('SELECT tbl_column_name from localized_texts WHERE tbl_name = ? GROUP BY tbl_column_name', record)
for field_rec in cur_fieldname:
print ("\t%s"% field_rec[0])
cur_data.execute('SELECT %s, idx FROM localized_texts WHERE tbl_name="%s" AND tbl_column_name="%s"' % (sys.argv[1], record[0], field_rec[0]))
query = 'UPDATE %s SET %s = ? WHERE id = ?' %(record[0], field_rec[0])
for text_rec in cur_data:
try:
conn.execute(query, text_rec)
except sqlite3.OperationalError:
print ("bad query: %s; params: (%s, %s)" % (query, record[0], field_rec[0]))
print("COMMIT")
conn.execute('COMMIT')
print("end all operate")
[/SRC]
У меня он уже полтора часа пытается справиться с этой базой