Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
bulwye
User
Beiträge: 4 Registriert: Dienstag 5. Januar 2010, 09:35
Dienstag 5. Januar 2010, 10:03
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.
/me
User
Beiträge: 3561 Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn
Dienstag 5. Januar 2010, 10:29
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.
jens
Python-Forum Veteran
Beiträge: 8502 Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:
Dienstag 5. Januar 2010, 16:50
Warum so umständlich, wenn es auch strftime gibt? Schau dir mal time oder datetime an...
Darii
User
Beiträge: 1177 Registriert: Donnerstag 29. November 2007, 17:02
Dienstag 5. Januar 2010, 19:16
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.
jens
Python-Forum Veteran
Beiträge: 8502 Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:
Mittwoch 6. Januar 2010, 08:38
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...
bulwye
User
Beiträge: 4 Registriert: Dienstag 5. Januar 2010, 09:35
Mittwoch 6. Januar 2010, 14:49
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.
Zuletzt geändert von
bulwye am Mittwoch 6. Januar 2010, 18:36, insgesamt 1-mal geändert.