Search code examples
pythonsqlpython-3.xphpmyadminpymysql

How can I sort a database by date?


I am creating a Python app that will store my homework in a database (using PhpMyAdmin). Here comes my problem:

At this moment, I am sorting every input with an ID (1, 2, 3, 4...), a date (23/06/2018...), and a task (read one chapter of a book). Now I would like to sort them by the date because when I want to read what do I have to do. I would prefer to see what shall I do first, depending on when should I get it done. For example:

If I have two tasks: one 25/07/2018 and the other 11/07/2018, I would like to show the 11/07/2018 first, no matter if it was addead later than the 25/07/2018. I am using Python (3.6), pymysql and PhpMyAdmin to manage the database.

I have had an idea to get this working, maybe I could run a Python script every 2 hours, that sorts all the elements in the database, but I have no clue about how can I do it.

Now, I will show you the code that enters the values into a database and then it shows them all.

def dba():
  connection = pymysql.connect(host='localhost',
                             user='root',
                             password='Adminhost123..',
                             db='deuresc',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

  try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `deures` (`data`, `tasca`) VALUES (%s, %s)"
        cursor.execute(sql, (data, tasca))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT * FROM `deures` WHERE `data`=%s"
        cursor.execute(sql, (data,))
        resultat = cursor.fetchone()
        print('Has introduït: ' + str(resultat))
  finally:
    connection.close()

def dbb():
  connection = pymysql.connect(host='localhost',
                             user='root',
                             password='Adminhost123..',
                             db='deuresc',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
  try:
    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT * FROM `deures`"
        cursor.execute(sql)
        resultat = cursor.fetchall()
        for i in resultat:
            print(i)        
  finally:
    connection.close()

Can someone help?


Solution

  • You don't sort the database. You sort the results of the query when you ask for data. So in your dbb function you should do:

    SELECT * FROM `deures` ORDER BY `data`
    

    assuming that data is the field with the date.