Advertisement
mosaid

readparagraph.py

Nov 7th, 2019
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.95 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3. import sqlite3
  4. import sys
  5. import os
  6. import inspect
  7.  
  8.  
  9. def eprint(*args, **kwargs):
  10.     print(*args, file=sys.stderr, **kwargs)
  11.  
  12.  
  13. def connectDB():
  14.     try:
  15.         path = os.path.dirname(os.path.realpath(__file__)) + "/rParagraphDB.db"
  16.         con = sqlite3.connect(path)
  17.         return con
  18.     except sqlite3.Error as error:
  19.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  20.  
  21.  
  22. def createDB():
  23.     con = connectDB()
  24.     c = con.cursor()
  25.     c.execute("""CREATE TABLE IF NOT EXISTS FILES(
  26.        id INTEGER PRIMARY KEY ,
  27.        file text  NOT NULL UNIQUE,
  28.        current INTEGER DEFAULT 0 );""")
  29.     c.execute("""CREATE TABLE IF NOT EXISTS HISTORY(
  30.        fid INTEGER UNIQUE , paragraph INTEGER );""")
  31.     c.execute("""CREATE TABLE IF NOT EXISTS WORDS(
  32.        id INTEGER PRIMARY KEY ,
  33.        fid INTEGER,
  34.        word text  NOT NULL,
  35.        UNIQUE (fid,word)
  36.    );""")
  37.     c.execute("""CREATE TABLE IF NOT EXISTS FAVS(
  38.        id INTEGER PRIMARY KEY ,
  39.        fid INTEGER,
  40.        paragraph INTEGER,
  41.        UNIQUE (fid,paragraph)
  42.    );""")
  43.     con.commit()
  44.     c.close()
  45.     con.close()
  46.  
  47.  
  48. def addFile(f):
  49.     try:
  50.         con = connectDB()
  51.         c = con.cursor()
  52.         c.execute("""
  53.                  INSERT OR IGNORE INTO FILES (file)
  54.                  VALUES ("{f}") """ .format(f=f))
  55.         con.commit()
  56.         print(c.lastrowid)
  57.         c.close()
  58.     except sqlite3.Error as error:
  59.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  60.     finally:
  61.         if (con):
  62.             con.close()
  63.  
  64.  
  65. def addFav(fid, p):
  66.     try:
  67.         con = connectDB()
  68.         c = con.cursor()
  69.         c.execute("""
  70.                  INSERT OR IGNORE INTO FAVS (fid,paragraph)
  71.                  VALUES("{i}", "{p}" )
  72.                  """ .format(i=fid, p=p))
  73.         con.commit()
  74.         c.close()
  75.     except sqlite3.Error as error:
  76.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  77.     finally:
  78.         if (con):
  79.             con.close()
  80.  
  81.  
  82. def getFavs(fid):
  83.     try:
  84.         con = connectDB()
  85.         c = con.cursor()
  86.         c.execute(""" select id, paragraph from FAVS
  87.                  where fid="{f}" ORDER BY id ASC
  88.                  """.format(f=fid))
  89.         rows = c.fetchall()
  90.         for row in rows:
  91.             print(row[0], ":", row[1])
  92.         c.close()
  93.     except sqlite3.Error as error:
  94.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  95.     finally:
  96.         if (con):
  97.             con.close()
  98.  
  99.  
  100. def getFav(fid, i):
  101.     try:
  102.         con = connectDB()
  103.         c = con.cursor()
  104.         c.execute(""" select paragraph from FAVS
  105.                  where fid="{f}" and id="{i}"
  106.                  """.format(f=fid, i=i))
  107.         row = c.fetchone()
  108.         if (row):
  109.             print(row[0])
  110.         c.close()
  111.     except sqlite3.Error as error:
  112.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  113.     finally:
  114.         if (con):
  115.             con.close()
  116.  
  117.  
  118. def setParagraph(fid, p):
  119.     try:
  120.         con = connectDB()
  121.         c = con.cursor()
  122.         c.execute("""
  123.                  INSERT OR REPLACE INTO HISTORY (fid,paragraph)
  124.                  VALUES("{i}", "{p}" )
  125.                  """ .format(i=fid, p=p))
  126.         con.commit()
  127.         c.close()
  128.     except sqlite3.Error as error:
  129.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  130.     finally:
  131.         if (con):
  132.             con.close()
  133.  
  134.  
  135. def getParagraph(fid):
  136.     try:
  137.         con = connectDB()
  138.         c = con.cursor()
  139.         c.execute(""" select paragraph from HISTORY
  140.                  where fid="{i}" """.format(i=fid))
  141.         row = c.fetchone()
  142.         if (row):
  143.             print(row[0])
  144.         c.close()
  145.     except sqlite3.Error as error:
  146.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  147.     finally:
  148.         if (con):
  149.             con.close()
  150.  
  151.  
  152. def addWord(fid, word):
  153.     try:
  154.         con = connectDB()
  155.         c = con.cursor()
  156.         c.execute("""
  157.        INSERT OR IGNORE INTO WORDS (fid,word)
  158.        VALUES("{i}","{w}")
  159.        """ .format(i=fid, w=word))
  160.         con.commit()
  161.         c.close()
  162.     except sqlite3.Error as error:
  163.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  164.     finally:
  165.         if (con):
  166.             con.close()
  167.  
  168.  
  169. def rmWord(fid, word):
  170.     try:
  171.         con = connectDB()
  172.         c = con.cursor()
  173.         c.execute("""
  174.        DELETE FROM WORDS
  175.        WHERE fid="{i}" and word="{w}"
  176.        """ .format(i=fid, w=word))
  177.         con.commit()
  178.         c.close()
  179.     except sqlite3.Error as error:
  180.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  181.     finally:
  182.         if (con):
  183.             con.close()
  184.  
  185.  
  186. def getWord(fid):
  187.     try:
  188.         con = connectDB()
  189.         c = con.cursor()
  190.         c.execute("""
  191.        SELECT word from WORDS
  192.        where fid="{i}"
  193.        ORDER BY id ASC """ .format(i=fid))
  194.         rows = c.fetchall()
  195.         for row in rows:
  196.             print(row[0])
  197.         c.close()
  198.     except sqlite3.Error as error:
  199.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  200.     finally:
  201.         if (con):
  202.             con.close()
  203.  
  204.  
  205. def getFile():
  206.     try:
  207.         con = connectDB()
  208.         c = con.cursor()
  209.         c.execute(""" select id, file from FILES
  210.        where current="1" """)
  211.         row = c.fetchone()
  212.         if (row):
  213.             print("%d:%s" % (row[0], row[1]))
  214.         c.close()
  215.     except sqlite3.Error as error:
  216.         eprint("@%s:%s" % (inspect.stack()[0][3], error))
  217.     finally:
  218.         if (con):
  219.             con.close()
  220.  
  221.  
  222. def getALL():
  223.     try:
  224.         con = connectDB()
  225.         c = con.cursor()
  226.         c.execute(""" select id, file from FILES
  227.        ORDER BY id ASC """)
  228.         rows = c.fetchall()
  229.         for row in rows:
  230.             print("%d:%s" % (row[0], row[1]))
  231.         c.close()
  232.     except sqlite3.Error as error:
  233.         eprint("@%s:%s" % (inspect.stack()[0][3], error))
  234.     finally:
  235.         if (con):
  236.             con.close()
  237.  
  238.  
  239. def setFile(fid):
  240.     try:
  241.         con = connectDB()
  242.         c = con.cursor()
  243.         c.execute(""" UPDATE FILES set current=0
  244.        where id <> "{i}" """.format(i=fid))
  245.         c.execute(""" UPDATE FILES set current=1
  246.        where id="{i}" """.format(i=fid))
  247.         con.commit()
  248.         c.close()
  249.     except sqlite3.Error as error:
  250.         eprint("@%s: %s" % (inspect.stack()[0][3], error))
  251.     finally:
  252.         if (con):
  253.             con.close()
  254.  
  255.  
  256. def myfuncSwitch(arg):
  257.     cmd = arg[1]
  258.     switcher = {
  259.         "add": addFile,
  260.         "get": getFile,
  261.         "set": setFile,
  262.         "all": getALL,
  263.         "setp": setParagraph,
  264.         "getp": getParagraph,
  265.         "addw": addWord,
  266.         "getw": getWord,
  267.         "rmw": rmWord,
  268.         "addf": addFav,
  269.         "getf": getFav,
  270.         "getfs": getFavs
  271.     }
  272.     func = switcher.get(cmd)
  273.     func(*arg[2:])
  274.  
  275.  
  276. def main():
  277.     createDB()
  278.     myfuncSwitch(sys.argv)
  279.  
  280.  
  281. if __name__ == "__main__":
  282.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement