MYSQL modulo stunden minuten sekunden

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
bulwye
User
Beiträge: 4
Registriert: Dienstag 5. Januar 2010, 09:35

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")


Zuletzt geändert von bulwye am Mittwoch 6. Januar 2010, 15:05, insgesamt 1-mal geändert.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
bulwye
User
Beiträge: 4
Registriert: Dienstag 5. Januar 2010, 09:35

Wie meinst du das, ich soll mit den Stunden anfangen????????????????
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Warum so umständlich, wenn es auch strftime gibt? Schau dir mal time oder datetime an...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
bulwye
User
Beiträge: 4
Registriert: Dienstag 5. Januar 2010, 09:35

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
Zuletzt geändert von bulwye am Mittwoch 6. Januar 2010, 18:36, insgesamt 1-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

(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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
bulwye
User
Beiträge: 4
Registriert: Dienstag 5. Januar 2010, 09:35

Habe es schon geändert.

Danke nochmal alles gute.


Gruß,

bulwye
Antworten