57 lines
1.6 KiB
Python
Executable File
57 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import sqlite3
|
|
import argparse
|
|
|
|
parser = argparse.ArgumentParser(description='grus-add')
|
|
parser.add_argument('-f', '--file', type=str, required=False,
|
|
help='file containing list of strings')
|
|
parser.add_argument('-w', '--word', type=str, required=False,
|
|
help='file containing list of strings')
|
|
parser.add_argument('-d', '--db', type=str, required=True,
|
|
help='database file')
|
|
args = parser.parse_args()
|
|
|
|
if __name__ == '__main__':
|
|
if args.file == None and args.word == None:
|
|
print("-f or -w required")
|
|
print("run grus-add --help to print help")
|
|
sys.exit(1)
|
|
|
|
conn = sqlite3.connect(args.db)
|
|
curs = conn.cursor()
|
|
|
|
stmt = """CREATE TABLE IF NOT EXISTS words (
|
|
word TEXT PRIMARY KEY NOT NULL,
|
|
sorted TEXT NOT NULL);"""
|
|
curs.execute(stmt)
|
|
conn.commit()
|
|
|
|
stmt = """INSERT INTO words(word, sorted)
|
|
VALUES(?, ?);"""
|
|
|
|
if args.file != None:
|
|
rows = []
|
|
with open(args.file) as words:
|
|
for word in words:
|
|
word = word.strip()
|
|
lexical = ''.join(sorted(word))
|
|
rows.append((word, lexical))
|
|
print(len(rows))
|
|
sys.stdout.write('\x1b[1A')
|
|
sys.stdout.write('\x1b[2K')
|
|
curs.executemany(stmt, rows)
|
|
|
|
elif args.word != None:
|
|
word = args.word.strip()
|
|
lexical = ''.join(sorted(word))
|
|
curs.execute(stmt, (word, lexical))
|
|
|
|
conn.commit()
|
|
|
|
curs.close()
|
|
conn.close()
|
|
|
|
print("Database initialized.")
|