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

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

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: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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

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: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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

super danke,

des mit der anderen klasse funktioniert einwandfrei!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Antworten