Seite 1 von 1

MYSQL modulo stunden minuten sekunden

Verfasst: Dienstag 5. Januar 2010, 10:03
von bulwye
Hallo Python-Forum,
ich habe ein Problem mit der Programmierung von Python.
Zur Zeit soll ich von einer MYSQL Datenbank die geführten Telefonate der letzten 10 Tage auslesen und in einer csv Datei speichern. Ich versuch es mit modulo. Die Werte stimmen nicht.

Hier mein Quelltext kann mir jemand helfen?????

Bedanke mich im vorraus.

Code: Alles auswählen


#!/usr/bin/python
# -*- coding: utf-8 -*-


# Import librarys                                                
import MySQLdb  
import sys
import os
import time
import datetime

# Derzeitiges Datum
currdate = datetime.datetime.now().strftime("%d%m%Y")

datei=open("/tmp/sql_phone_calls_"+ currdate +".csv",'a')              

              
#Datenbank-Connection und -Cursor (Zeiger) erstellen
connect = MySQLdb.connect(host="XXXXXXXXXX",db="Handy",user="XXXXXXXXXXX",passwd="XXXXXXXXXXXXXXXXXX")
cursor = connect.cursor()


# Handy Gespräche in stunden minuten sekunden
cursor.execute("""SELECT SUM(billsec) FROM cdr WHERE (dst LIKE '017%' OR dst LIKE '016%' OR dst LIKE '015%') AND (calldate >= CURRENT_DATE - INTERVAL 10 DAY) AND (disposition='ANSWERED')""")
dat = cursor.fetchone()

gesamt=dat[0]
sekunden=gesamt%60
minuten=((gesamt-sekunden)*60)%60
stunden=((gesamt-minuten)/60)%60
format=str(stunden) + ':' + str(minuten) + ':' + str(sekunden)

datei.write(str(format) + "\n\n")



Re: MYSQL modulo stunden minuten sekunden

Verfasst: Dienstag 5. Januar 2010, 10:29
von /me
bulwye hat geschrieben:ich habe ein Problem mit der Programmierung von Python.

[...]

Code: Alles auswählen

[...]
gesamt=dat[0]
sekunden=gesamt%60
minuten=((gesamt-sekunden)*60)%60
stunden=((gesamt-minuten)/60)%60
format=str(stunden) + ':' + str(minuten) + ':' + str(sekunden)
Du hast kein Problem mit der Programmierung von Python, du hast ein Problem in deiner Rechenlogik.

Ich würde die Berechnung andersherum aufbauen, also beginnend bei den Stunden.

Verfasst: Dienstag 5. Januar 2010, 16:46
von bulwye
Wie meinst du das, ich soll mit den Stunden anfangen????????????????

Verfasst: Dienstag 5. Januar 2010, 16:50
von jens
Warum so umständlich, wenn es auch strftime gibt? Schau dir mal time oder datetime an...

Re: MYSQL modulo stunden minuten sekunden

Verfasst: Dienstag 5. Januar 2010, 19:16
von Darii
bulwye hat geschrieben:Hier mein Quelltext kann mir jemand helfen?????

Code: Alles auswählen

minuten=((gesamt-sekunden)*60)%60
stunden=((gesamt-minuten)/60)%60
Da gibts ein Rechenzeichen, was in der 1. Zeile falsch und in der 2. richtig ist.

Verfasst: Mittwoch 6. Januar 2010, 08:38
von jens
Was ich meine:

Entweder mit time:

Code: Alles auswählen

import time

sec = 1262763127.16

t = time.localtime(sec)
print time.strftime("%H:%M:%S", t)
oder mit datetime:

Code: Alles auswählen

import datetime

sec = 1262763127.16

d = datetime.datetime.fromtimestamp(sec)
print d.strftime("%H:%M:%S")
Kommt beides mal der String "08:32:07" raus...

[GELÖST]

Verfasst: Mittwoch 6. Januar 2010, 14:49
von bulwye
Hallo,
danke für die vielen Antworten es Funktioniert ich habe es mit
strftime GELÖST bzw. mit time.

Code: Alles auswählen


#!/usr/bin/python 
# -*- coding: utf-8 -*- 


# Import librarys                                                
import MySQLdb  
import sys 
import os 
import time 
import datetime 

# Derzeitiges Datum 
currdate = datetime.datetime.now().strftime("%d%m%Y") 

datei=open("/tmp/sql_phone_calls_"+ currdate +".csv",'a')              

              
#Datenbank-Connection und -Cursor (Zeiger) erstellen 
connect = MySQLdb.connect(host="XXXXXXXXXX",db="Handy",user="XXXXXXXXXXX",passwd="XXXXXXXXXXXXXXXXXX") 
cursor = connect.cursor() 


# Handy Gespräche in stunden minuten sekunden 
cursor.execute("""SELECT SUM(billsec) FROM cdr WHERE (dst LIKE '017%' OR dst LIKE '016%' OR dst LIKE '015%') AND (calldate >= CURRENT_DATE - INTERVAL 10 DAY) AND (disposition='ANSWERED')""") 
dat = cursor.fetchone() 

sec=dat[0]
t = time.localtime(sec)
endcalls = time.strftime("%H:%M:%S", t)
datei.write (head1)
datei.write(str endcalls  + "\n\n")



Bedanke mich nochmal bei euch.
:D :D :D :D

Verfasst: Mittwoch 6. Januar 2010, 16:09
von jens
(Bitte http://www.python-forum.de/faq.php#21 beachten!)

Das ist unschön:

Code: Alles auswählen

datei.write(str(endcalls) + "\n\n") 
endcalls ist bereits ein String... Also entweder so:

Code: Alles auswählen

datei.write(endcalls + "\n\n") 
oder so:

Code: Alles auswählen

datei.write("%s\n\n" % endcalls) 
btw. in deinem code ist ein Fehler: Statt "tim.strftime" muß es "time.strftime" heißen.

schon geändert

Verfasst: Mittwoch 6. Januar 2010, 18:38
von bulwye
Habe es schon geändert.

Danke nochmal alles gute.


Gruß,

bulwye