Update database format
The old database format would keep the post data in a JSON string. Now, post data is broken out into individual columns for searching more easily. Additionally, a convert script has been provided. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
129
convert_db.py
Normal file
129
convert_db.py
Normal file
@@ -0,0 +1,129 @@
|
||||
import json
|
||||
import sqlite3
|
||||
|
||||
from chanbans.db import get_db
|
||||
|
||||
|
||||
def dict_factory(cursor, row):
|
||||
d = {}
|
||||
for idx, col in enumerate(cursor.description):
|
||||
d[col[0]] = row[idx]
|
||||
return d
|
||||
|
||||
|
||||
# Create a new database too
|
||||
old_db = get_db()
|
||||
|
||||
new_db = sqlite3.connect("new_db.db")
|
||||
new_db.executescript(
|
||||
"""
|
||||
create table if not exists bans(
|
||||
id integer primary key,
|
||||
action varchar(5),
|
||||
board varchar(10),
|
||||
length varchar(10),
|
||||
now varchar(30),
|
||||
name varchar(100),
|
||||
trip varchar(30),
|
||||
com text,
|
||||
time varchar(30),
|
||||
sub varchar(100),
|
||||
nsfw boolean,
|
||||
thumb varchar(100),
|
||||
ext varchar(10),
|
||||
w int,
|
||||
h int,
|
||||
tn_w int,
|
||||
tn_h int,
|
||||
md5 varchar(100),
|
||||
fsize integer,
|
||||
filename text,
|
||||
tim varchar(30),
|
||||
thumb_path text,
|
||||
reason varchar(200)
|
||||
);
|
||||
"""
|
||||
)
|
||||
|
||||
old_db.row_factory = dict_factory
|
||||
|
||||
bans = old_db.execute("SELECT * FROM BANS").fetchall()
|
||||
|
||||
import pprint
|
||||
|
||||
for ban in bans:
|
||||
post = json.loads(ban["post"])
|
||||
post["action"] = ban["action"]
|
||||
# post['board'] = ban['board']
|
||||
post["length"] = ban["length"]
|
||||
post["thumb_path"] = ban["thumb_path"]
|
||||
post["reason"] = ban["reason"]
|
||||
|
||||
if "nsfw" not in post:
|
||||
post["nsfw"] = False
|
||||
if "thumb" not in post:
|
||||
post["thumb"] = None
|
||||
if "ext" not in post:
|
||||
post["ext"] = None
|
||||
|
||||
if "w" not in post:
|
||||
post["w"] = 0
|
||||
else:
|
||||
post['w'] = int(post['w'])
|
||||
|
||||
if "h" not in post:
|
||||
post["h"] = 0
|
||||
else:
|
||||
post['h'] = int(post['h'])
|
||||
|
||||
if "tn_w" not in post:
|
||||
post["tn_w"] = 0
|
||||
else:
|
||||
post['tn_w'] = int(post['tn_w'])
|
||||
|
||||
if "tn_h" not in post:
|
||||
post["tn_h"] = 0
|
||||
else:
|
||||
post['tn_h'] = int(post['tn_h'])
|
||||
|
||||
if "md5" not in post:
|
||||
post["md5"] = None
|
||||
if "fsize" not in post:
|
||||
post["fsize"] = None
|
||||
if "filename" not in post:
|
||||
post["filename"] = None
|
||||
if "tim" not in post:
|
||||
post["tim"] = None
|
||||
|
||||
print(type(post['w']))
|
||||
|
||||
new_db.execute(
|
||||
"""
|
||||
INSERT INTO bans (action, board, length, now, name, trip, com, time, sub, nsfw, thumb, ext, w, h, tn_w, tn_h, md5, fsize, filename, tim, thumb_path, reason)
|
||||
VALUES (
|
||||
:action,
|
||||
:board,
|
||||
:length,
|
||||
:now,
|
||||
:name,
|
||||
:trip,
|
||||
:com,
|
||||
:time,
|
||||
:sub,
|
||||
:nsfw,
|
||||
:thumb,
|
||||
:ext,
|
||||
:w,
|
||||
:h,
|
||||
:tn_w,
|
||||
:tn_h,
|
||||
:md5,
|
||||
:fsize,
|
||||
:filename,
|
||||
:tim,
|
||||
:thumb_path,
|
||||
:reason
|
||||
)
|
||||
""",
|
||||
post,
|
||||
)
|
||||
Reference in New Issue
Block a user