OSDN Git Service

implement update function(from 0.9.1).
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Mon, 8 Mar 2010 02:35:56 +0000 (02:35 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Mon, 8 Mar 2010 02:35:56 +0000 (02:35 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@467 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/dbMySQL.py
rec10/trunk/src/install.py

index 9c4c4f7..a8a1d55 100644 (file)
@@ -46,7 +46,7 @@ class DB_MySQL:
             epgbtime DATETIME,\
             epgetime DATETIME,\
             epgduplicate TINYINT DEFAULT 0,\
-            epgchange TINYINT DEFAULT 0,\
+            epgchange TINYINT DEFAULT 0\
             UNIQUE uni (type,chtxt,title,btime,deltaday)\
             )')
         except:
@@ -726,7 +726,8 @@ class DB_MySQL:
             terec TINYINT DEFAULT 0,\
             bscsrec TINYINT DEFAULT 0,\
             b252ts TINYINT DEFAULT 0,\
-            installed TINYINT DEFAULT 0\
+            installed TINYINT DEFAULT 0,\
+            version TINYINT\
             )")
             db[1].execute("INSERT IGNORE into in_status VALUE (0,0,0,0,0)")
         except:
@@ -751,7 +752,28 @@ class DB_MySQL:
             r[3]=str(r[3])
             ret.append(r)
         return ret
-        
+    def select_version_in_status(self):
+        db = self.connect_db()
+        version=0
+        try:
+            dbexe = db[1].execute("\
+            SELECT version \
+            FROM in_status \
+            ")
+            if dbexe > 0:
+                dls = db[1].fetchall()
+            self.close_db(db)
+            for dl in dls:
+                r = list(dl)
+                version=int(str(r[0]))
+        except:
+            ""
+        return version
+    def change_version_in_status(self,version):
+        db = self.connect_db()
+        db[1].execute("\
+        UPDATE in_status SET version=%s",str(version))
+        self.close_db(db)
     def change_ts2avi_in_status(self,i):
         """
         statuをiだけ増減する
@@ -1025,7 +1047,6 @@ class DB_MySQL:
             return dls[0]
         else:
             return dls
-
     def new_auto_timeline_keyword(self):
         db = self.connect_db()
         try:
@@ -1088,3 +1109,15 @@ class DB_MySQL:
         WHERE \
         btime < DATE_SUB(now(),INTERVAL " + dhour + " HOUR )")
         self.close_db(db)
+    def update_db_to93(self):
+        db = self.connect_db()
+        db[1].execute("\
+        ALTER TABLE timeline ADD epgtitle VARCHAR(100),\
+        ADD epgbtime DATETIME,\
+        ADD epgetime DATETIME,\
+        ADD epgduplicate TINYINT DEFAULT 0,\
+        ADD epgchange TINYINT DEFAULT 0")
+        db[1].execute("\
+        ALTER TABLE in_status ADD version TINYINT")
+        self.close_db(db)
+        self.change_version_in_status("93")
\ No newline at end of file
index 3019438..1ce5dcc 100644 (file)
@@ -12,6 +12,7 @@ import shutil
 
 import recdblist
 def install():
+    version = 93
     recdblist.printutf8(u"rec10の環境インストールを開始します。")
     time.sleep(1)
     recdblist.printutf8(u"環境インストール処理中・・・")
@@ -39,11 +40,16 @@ def install():
     if os.path.exists(os.path.join(path,"rec10d.py")):
         try:
             import rec10d
-            rec10d.rec10db.drop_in_status()
-            rec10d.rec10db.drop_in_settings()
-            time.sleep(2)
-            rec10d.rec10db.new_in_status()
-            rec10d.rec10db.new_in_settings()
+            if rec10d.rec10db.select_version_in_status()==0 and rec10d.rec10db.select_installed_in_status()==1:
+                recdblist.printutf8(u"既存のDBが見つかりました。0.9.1と仮定してアップデート処理を行います。")
+                rec10d.rec10db.update_db_to93()
+            else:
+                rec10d.rec10db.drop_in_status()
+                rec10d.rec10db.drop_in_settings()
+                time.sleep(2)
+                rec10d.rec10db.new_in_status()
+                rec10d.rec10db.new_in_settings()
+                rec10d.rec10db.change_version_in_status(version)
         except Exception, inst:
             recdblist.printutf8(u"DB処理中にエラーが出ました。configファイルのDB設定を見直してください。")
             print type(inst)