Ejemplo n.º 1
0
def Select(query, params):
    try:
        connection = connect()
        with connection:
            cursor = connection.cursor()
            cursor.execute(query, params)
            result = cursor.fetchall()
            cursor.close()
        connection.close()
    except MySQLdb.Error:
        raise MySQLdb.Error("Select error")
    return result
Ejemplo n.º 2
0
def Update(query, params):
    try:
        connection = connect()
        with connection:
            cursor = connection.cursor()
            connection.begin()
            cursor.execute(query, params)
            connection.commit()
            cursor.close()
            id = cursor.lastrowid
        connection.close()
    except MySQLdb.Error:
        raise MySQLdb.Error("Update error")
    return id
Ejemplo n.º 3
0
def createPostHelper(date, thread, message, user, forum, optional):
    finder.find(table="Threads", id="id", value=thread)
    finder.find(table="Forums", id="short_name", value=forum)
    finder.find(table="Users", id="email", value=user)
    if len(Select("SELECT Threads.id FROM Threads JOIN Forums ON Threads.forum = Forums.short_name "
                                "WHERE Threads.forum = %s AND Threads.id = %s", (forum, thread, ))) == 0:
        raise Exception("no thread with id = " + thread + " in forum " + forum)
    if "parent" in optional:
        if len(Select("SELECT Posts.id FROM Posts JOIN Threads ON Threads.id = Posts.thread "
                             "WHERE Posts.id = %s AND Threads.id = %s", (optional["parent"], thread, ))) == 0:
            raise Exception("Cant find post with id = " + optional["parent"])
    query = "INSERT INTO Posts (message, user, forum, thread, date"
    values = "(%s, %s, %s, %s, %s"
    parameters = [message, user, forum, thread, date]

    for param in optional:
        query += ", "+param
        values += ", %s"
        parameters.append(optional[param])

    query += ") VALUES " + values + ")"

    update = "UPDATE Threads SET posts = posts + 1 WHERE id = %s"

    connection = connect()
    with connection:
        cursor = connection.cursor()
        try:
            connection.begin()
            cursor.execute(update, (thread, ))
            cursor.execute(query, parameters)
            connection.commit()
        except Exception as e:
            connection.rollback()
            raise Exception("Database error: " + e.message)
        post_id = cursor.lastrowid
        cursor.close()

    connection.close()
    post = postQueryHelper(post_id)
    del post["dislikes"]
    del post["likes"]
    del post["parent"]
    del post["points"]
    return post