Bitcoin Forum
May 30, 2024, 10:12:07 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Frage zu SQLITE [Python]  (Read 119 times)
Lyricz (OP)
Legendary
*
Offline Offline

Activity: 1455
Merit: 1033



View Profile
January 11, 2018, 03:52:02 PM
 #1

Hallo,
ich arbeite mich derzeit gerade in Python ein und möchte von einer SQL-Datenbank aus 2 verschiedenen Tabellen Spalten miteinander verknüpfen, aber leider klappt das nicht wie gewollt.

Code:
conn = sqlite3.connect('healthdb_secure.sqlite')											
c = conn.cursor()

for row in c.execute("SELECT s.data_id, s.start_date, s.end_date, q.data_type FROM samples AS s ,quantity AS q")
     print(row)


Ich hätte gerne das jeweils in einer Zeile die oben abgefragten Tabellenwerte angezeit werden, aber es wird zu jeder Zeile aus Tabelle 1 die komplette 2. Tabelle angehängt.

Die ausgabe sieht dann so aus:

T1.Zeile-1, T2.Zeile-1
T1.Zeile-1, T2.Zeile-2
T1.Zeile-1, T2.Zeile-3
...
...
T1.Zeile-2, T2.Zeile-1
T1.Zeile-2, T2.Zeile-2
..
..
..

gewünscht wäre:

T1.Zeile-1, T2.Zeile-2
T1.Zeile-2, T2.Zeile-2
..
..



Hat jemand eine Lösung für dieses Problem?
Lyricz (OP)
Legendary
*
Offline Offline

Activity: 1455
Merit: 1033



View Profile
January 12, 2018, 02:51:54 PM
 #2

Wenn es dir wichtig ist, dass je Result 2 Werte verschiedener Tabellen zurück gegeben werden, müssen die zuvor sinnvoll miteinander verknüpft werden, z. B. per JOIN.
Um dir da helfen zu können, müsste man zuvor mal die Tabellenstruktur beider Tabellen kennen.

Ich habe es jetzt etwas anderst gelöst da ich nicht unbedingt eine Datenbank brauch in welcher die beiden Tabellen verknüpft sind, sondern lediglich an dern Werten interresiert bin.
...aber das kann man sicher auch eleganter lößen,..... den "JOIN"-Befehl werde ich mir dann am Montag mal genauer anschauen.

Quote
...
...
c = conn.cursor()
c.execute("SELECT data_id, start_date, end_date, data_type FROM samples")  
abfrage1 = c.fetchall()
   
c.execute("SELECT quantity, original_quantity FROM quantity_samples")    
abfrage2 = c.fetchall()

i=0
for row in abfrage1:
   
   if row[3] == 7:
      action = "Alpha"
   elif row[3] == 8:
      action = "Beta"
   elif row[3] == 12:
      action = "Final"
   else: action = ""
      
   date_start = str(datetime.datetime.fromtimestamp(unixTS + row[1]))[:-7]

   date_end = str(datetime.datetime.fromtimestamp(unixTS + row[2]))[:-7]
   
   line=str(row[0])+";"+date_start+";"+date_end+";"+action+";"+str(abfrage2
  • )+";"+str(abfrage2[1])
   table.append(line)
   i+=1
path=os.getcwd()
db=path+'/auswertung.csv'

file = open(db,'w')
for zeile in table:
      print(zeile)
      file.write(zeile+"\n")
file.close()
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!