def watermark(table_name):
    conn = connect_to_database.connect()
    count = 0
    params = []
    #print "Watermarked Tuples"
    for i in range(1, 10000):
        if (check_id(i) == True):
            row = model.fetch_only_a_b_c_from_table(conn, table_name, i)
            # model.update_only_a_b_c_in_table(conn,table_name,i,1,1,1)
            a_old, b_old, c_old = row[0], row[1], row[2]
            a8_old, b8_old = a_old % 256, b_old % 256
            a_mod, b_mod = a_old - a8_old, b_old - b8_old

            lbefore = (a8_old + b8_old) / 2
            hbefore = a8_old - b8_old

            hdash = 2 * hbefore + 1

            g = (hdash + 1) / 2
            f = hdash / 2

            anew8, bnew8 = lbefore + g, lbefore - f
            if ((anew8 >= 0 and anew8 < 256) and (bnew8 >= 0 and bnew8 < 256)):
                a_new = a_mod + anew8
                b_new = b_mod + bnew8
                c_new = c_old | 10
                #print i,a_new,b_new,c_new
                params.append((a_new, b_new, c_new, i))
                count += 1
                #print i

    model.update_all_a_b_c_in_table(conn, table_name, params)

    print("Total rows Updated %d" % count)
    connect_to_database.close(conn)
def reverse_watermark(table_name):
    conn = connect_to_database.connect()
    count = 0
    params = []
    #print "Reverse Watermarked Tuples"
    for i in range(1, 10000):
        if check_id(i) == True:
            row = model.fetch_only_a_b_c_from_table(conn, table_name, i)
            #model.update_only_a_b_c_in_table(conn,table_name,i,1,1,1)
            a_old, b_old, c_old = row[0], row[1], row[2]
            a8_old, b8_old = a_old % 256, b_old % 256
            a_mod, b_mod = a_old - a8_old, b_old - b8_old

            lbefore = (a8_old + b8_old) / 2
            hbefore = a8_old - b8_old

            hdash = hbefore / 2

            g = (hdash + 1) / 2
            f = hdash / 2

            anew8, bnew8 = lbefore + g, lbefore - f
            if ((c_old & 10) == 10):
                a_new = a_mod + anew8
                b_new = b_mod + bnew8
                temp = sys.maxsize
                c_new = c_old & (temp ^ 10)

                #print i,a_new,b_new,c_new
                params.append((a_new, b_new, c_new, i))
                count += 1
                #print i

    model.update_all_a_b_c_in_table(conn, table_name, params)

    print("Total rows Updated %d" % count)
    connect_to_database.close(conn)
    try:
        curr.execute("UPDATE %s SET a = %d,b = %d,c = %d WHERE ID = %d" %
                     (table_name, a, b, c, id))
        conn.commit()
    except:
        conn.rollback()


def update_all_a_b_c_in_table(conn, table_name, params):
    curr = conn.cursor()
    table_name = str(table_name)
    sql = "UPDATE %s SET " % (table_name)
    sql = sql + "a = %s,b =%s,c = %s WHERE ID = %s"
    curr.executemany(sql, params)
    conn.commit()
    print("Updated sucessfully")


if __name__ == '__main__':
    x = int(
        raw_input('''Enter 1 for deleting every row from table
Enter 2 for inserting rows\n'''))
    y = str(raw_input("Insert table name\n"))
    conn = connect_to_database.connect()
    if x == 1:
        delete_everything_table(conn, y)
    else:
        insert_into_table(conn, y)

    connect_to_database.close(conn)
def list():
    conn = connect_to_database.connect()
    rows = model.fetch_everything_from_table(conn, 'data')
    connect_to_database.close(conn)
    return render_template('test.html', rows=rows)
def copy_data_from_src_to_dest(src, dest):
    conn = connect_to_database.connect()
    model.delete_everything_table(conn, dest)
    param = model.fetch_a_b_c_from_table(conn, src)
    model.insert_param_into_table(conn, dest, param)
    connect_to_database.close(conn)