2015-02-25 4 views
1

Проблема:питон кортеж возвращается datetime.datetime

Всякий раз, когда я получаю результат следующего запроса:

"SELECT email, url, `timestamp` FROM `transaction` WHERE `email` != '' AND `timestamp` >= \'" + dateonlystring + "\' AND `timestamp` < DATE(DATE_ADD(\'" + dateonlystring + "\', INTERVAL 1 DAY))" 

Это придумывает:

('[email protected] ',' http://sample.url.com ', datetime.datetime (2015, 2, 25, 10, 11, 19))

Почему это datetime.datetime (2015, 2, 25, 10, 11, 19)))?

И как я могу включить, что в этом:

[email protected]~ http://sample.url.com~2015-02-25 10:11:19

Мой код/​​Что я пробовал:

#Date 
#datestamp = datetime.strptime('2015-02-25 00:00:00', "%Y-%m-%d %H:%M:%S") 
datestamp = datetime.now() 
dateonlystring = str(datestamp.date().strftime("%Y-%m-%d %H:%M:%S")) 
datetimestring = str(datestamp.now().strftime("%Y%m%d%H%M%S")) 

#Dunchangeme: 
#Query: 
q_getstuff = "SELECT email, url, `timestamp` FROM `transaction` WHERE `email` != '' AND `timestamp` >= \'" + dateonlystring + "\' AND `timestamp` < DATE(DATE_ADD(\'" + dateonlystring + "\', INTERVAL 1 DAY))" 

try: 
    con = mdb.connect(hostname, username, password, database) 
    cur = con.cursor() 
    cur.execute(q_getstuff) 
    result = cur.fetchall() 

    for row in result: 
     tuplecrap = str(row).replace('(', '').replace(')', '').replace('\'', '').replace(', ', '~') 
     print tuplecrap 

Из обратите внимание, что прокомментированный первый datestamp есть, если пользователь намеревается перейти к определенной дате (в отличие от только сейчас).

Самый простой способ - просто избавиться от скобок и запятых, как я уже говорил выше, но это не решает проблему, не вдаваясь в сложные решения регулярных выражений, и я уверен, что это неправильный путь ,

Любые предложения?

+0

Преобразование кортежа в строку и манипулирования это, безусловно, не является «простым способом». Кажется, вы знаете о функции 'strftime', почему бы не использовать это? – interjay

+0

Что такое 'mdb'? Почему вы используете форматирование строк вместо параметризованных запросов? Обычно вы должны просто передавать объекты datetime (и предпочтительно - * timezone-aware * datetime), а драйвер должен сериализоваться в формате, который понимает движок sql. – jfs

ответ

2

У вас есть кортежи 3 элементов в каждом ряду результатов, просто распаковать его:

for row in result: 
    email, url, date = row 
    # here you can format date as you want 
+0

Ничего себе. Я не знал, что ты сможешь это сделать. –

Смежные вопросы