Programming Forums

Programming Forums (http://www.programmingforums.org/forumindex.php)
-   Python (http://www.programmingforums.org/forum43.html)
-   -   Formatting date from MySQLdb (http://www.programmingforums.org/showthread.php?t=12562)

poopman Feb 12th, 2007 4:06 PM

Formatting date from MySQLdb
 
Hey all,

I've wrtting something that gathers the date from a mySQL database but I need to be able to grab the year, or month, or day, or everything if needed. When I get the date from my database I get this:

(datetime.date(2007, 2, 9),)

How would I format it so I can have the dates end up like this?:

2009-02-09

Any help is much appreciated! :banana:

Arevos Feb 12th, 2007 4:12 PM

:

  1. dateObject.strftime("%Y-%m-%d")


poopman Feb 12th, 2007 4:21 PM

Cool, thanks.

Another question as I am fairly new to python. How do I apply the .strftime to that tuple that I posted?

Arevos Feb 12th, 2007 6:04 PM

If you want to access an element of a tuple, you can use indices, in the same way you would an array or list:
:

  1. result = (datetime.date(2007, 2, 9),)
  2. date = result[0]
  3. print date.strftime("%Y-%m-%d")

Or simply:
:

  1. print result[0].strftime("%Y-%m-%d")

You can also assign a tuple to an set of variables to get its contents:
:

  1. coords = (4, 6)
  2. x, y = coords

And for a tuple with a single value:
:

  1. result = (datetime.date(2007, 2, 9),)
  2. date, = result

This notation when applied to only one value is a little obscure, however.

poopman Feb 12th, 2007 6:22 PM

Quote:

Originally Posted by Arevos (Post 123871)
If you want to access an element of a tuple, you can use indices, in the same way you would an array or list:
:

  1. result = (datetime.date(2007, 2, 9),)
  2. date = result[0]
  3. print date.strftime("%Y-%m-%d")

Or simply:
:

  1. print result[0].strftime("%Y-%m-%d")

You can also assign a tuple to an set of variables to get its contents:
:

  1. coords = (4, 6)
  2. x, y = coords

And for a tuple with a single value:
:

  1. result = (datetime.date(2007, 2, 9),)
  2. date, = result

This notation when applied to only one value is a little obscure, however.

Thanks for this. I tried out all these methods and kept coming up with this error:

AttributeError: 'tuple' object has no attribute 'strftime'

I can't figure out why this isn't working as it seems pretty straightfoward. :(

Arevos Feb 12th, 2007 6:38 PM

What that means is that the object you're trying to reference is not a date object, but a tuple. Might I see your code?

poopman Feb 12th, 2007 6:45 PM

I had to omit the SQL statement for work purposes, but here's all the code after that:
:

cursor.execute(sql_first_look)
result = cursor.fetchall()
date = result[0]

print date.strftime("%Y-%m-%d")
connection.commit()
cursor.close()
connection.close()


Arevos Feb 12th, 2007 6:57 PM

The "fetchall" function returns a list of tuples that represents the rows in your resultset. So result[0] returns the first item of the list; a tuple. You'd have to then index that again to get the first item of the tuple: result[0][0]

However, if you only expect your SQL to return one result, it's better to use "fetchone" instead.
:

  1. cursor.execute(sql_first_look)
  2. result = cursor.fetchone()
  3. date = result[0]
  4.  
  5. print date.strftime("%Y-%m-%d")

Also, I'm not sure you need connection.commit() unless your SQL statement is part of a transaction that alters the database. Nor do you need to close your cursor separately to your database; closing the database closes the cursor too.

So it's likely you just need:
:

  1. connection.close()


poopman Feb 12th, 2007 7:01 PM

That worked! Thanks a lot! :D :D :banana: :banana:


All times are GMT -5. The time now is 1:58 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC