nur eine Zeile aus mysql query->werte aber wie?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
bcit6k
User
Beiträge: 77
Registriert: Mittwoch 23. Juli 2008, 08:50

nur eine Zeile aus mysql query->werte aber wie?

Beitragvon bcit6k » Dienstag 5. August 2008, 10:30

hallo,

ich habe ein recht einfachs skript, dieses macht folgendes

sql_1 abfragen von db (funkt,mehrere werte)
for schleife
sql_2 abfrage von db(funkt auch,nur ein wert)
---hier möchte ich auf die werte zugreifen ---

hier will ich daten mit werten aus sql2 zurück in die db speichern


mein python sieht so aus

Code: Alles auswählen

#
#import all modules
import os
import _mysql

#
#set config

#connection to geodatadb
mysql_host = "hostaddr"
mysql_user = "root"
mysql_pwd = ""
mysql_db = "db"
i=0;
#
#set select sql
sql = "select 1 liefert ca 130 000 werte zurück"

#   
#now connect to db
dbmysql = _mysql.connect(mysql_host,mysql_user,mysql_pwd,mysql_db)
dbmysql2 = _mysql.connect(mysql_host,mysql_user,mysql_pwd,mysql_db)
dbmysql3 = _mysql.connect(mysql_host,mysql_user,mysql_pwd,mysql_db)

dbmysql.query(str(sql))
rows = dbmysql.store_result()

for row in rows.fetch_row():
   sql_zip = "sql 2 fragt spezifische daten zu wert aus sql1 ab" % (row[0],row[1],row[2],row[2],row[1])
   dbmysql2.query(str(sql_zip))
   rows2 = dbmysql2.store_result()
   i = i+1
   zipcode = dbmysql2.fetch_row()
   print zipcode
   sql_update = "sql_update updated sql1 mit werten aus abfrage sql2" % (row2[0],row[3])
   print sql_update
      
   
print "all Data done ROWS %s" % (i)


tja und beim abfragen von nur einer zeile in sql2 haperts. und ich weis nicht wie ich die werte da raus bekommen soll

so hätt ichs probiert

Code: Alles auswählen

rows2 = dbmysql2.store_result()
   
   zipcode = dbmysql2.fetch_row()


ich komm da nicht weiter!

danke für die hilfe
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Dienstag 5. August 2008, 10:43

fetchone() ist dein Freund.
bcit6k
User
Beiträge: 77
Registriert: Mittwoch 23. Juli 2008, 08:50

Beitragvon bcit6k » Dienstag 5. August 2008, 10:53

hi, danke für die antwort, das hab ich leider vergssen zu erwähnen.

ich habs auch mit

Code: Alles auswählen

rows2 = dbmysql2.store_result()
zipcode = dbmysql2.fetchone()


probiert und dann halt mit zipcode[0] für die value

nur das geht nicht da bekomme ich die fehlermeldung

AttributeError: fetchone()

in der Zeile zipcode = dbmysql2.fetchone()
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Dienstag 5. August 2008, 11:03

Ah ... hab mir Deinen Code mal genauer angeguckt. Womit arbeitest Du da eigentlich? -mysql ist genau was? Ich habe immer mit dem MySQLdb Modul gearbeitet. Das implementiert afaik die Python DB API (http://www.python.org/dev/peps/pep-0249/).

Daher sieht der grundlegende Aufbau dort immer so aus:

Code: Alles auswählen

import MySQLdb
connection = MySQLdb.connect(...)
cursor = connection.cursor()
cursor.execute('query')
res = cursor.fetchone()
# nun kannst Du die einzelnen Attributwerte aus res rausholen
# alternativ
res = cursor.fetchall()
for row in res:
    # hier wird dann jeweils eine Zeile behandelt


Evtl. hilft Dir das ja weiter.
bcit6k
User
Beiträge: 77
Registriert: Mittwoch 23. Juli 2008, 08:50

Beitragvon bcit6k » Dienstag 5. August 2008, 11:26

super danke,

des mit der anderen klasse funktioniert einwandfrei!
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 11. August 2008, 12:02

Hyperion hat geschrieben:Ah ... hab mir Deinen Code mal genauer angeguckt. Womit arbeitest Du da eigentlich? -mysql ist genau was? Ich habe immer mit dem MySQLdb Modul gearbeitet. Das implementiert afaik die Python DB API (http://www.python.org/dev/peps/pep-0249/).

MySQLdb verwendet intern _mysql, welches man nicht einfach so nutzen sollte, sondern eben via MySQLdb.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder