Um zu steuern, wie Datenbanktypen beim Abrufen von Ergebnissen vom Datenbankserver in Python-Objekte zugeordnet werden, können Sie Konvertierungs-Callbacks registrieren.
Callbacks werden mithilfe der auf Modulebene ausgeführten register_converter-Methode registriert. Diese Methode wird aufgerufen mit dem Datenbanktyp als erstem Parameter und der Konvertierungsfunktion als zweitem Parameter. Um beispielsweise anzufordern, dass sqlanydb Decimal-Objekte für Daten in einer als Typ DT_DECIMAL beschriebenen Spalte erstellt, würden Sie das folgende Beispiel verwenden:
import sqlanydb import decimal def convert_to_decimal(num): return decimal.Decimal(num) sqlanydb.register_converter(sqlanydb.DT_DECIMAL, convert_to_decimal) |
Konvertierer können für die folgenden Datenbanktypen registriert werden:
DT_DATE DT_TIME DT_TIMESTAMP DT_VARCHAR DT_FIXCHAR DT_LONGVARCHAR DT_DOUBLE DT_FLOAT DT_DECIMAL DT_INT DT_SMALLINT DT_BINARY DT_LONGBINARY DT_TINYINT DT_BIGINT DT_UNSINT DT_UNSSMALLINT DT_UNSBIGINT DT_BIT |
Das folgende Beispiel zeigt, wie Sie Dezimalergebnisse in Ganzzahlen konvertieren, wobei Stellen nach dem Dezimalzeichen gekürzt werden. Der Gehaltsbetrag, der beim Ausführen der Anwendung angezeigt wird, ist ein Ganzzahlwert.
import sqlanydb def convert_to_int(num): return int(float(num)) sqlanydb.register_converter(sqlanydb.DT_DECIMAL, convert_to_int) # Create a connection object, then use it to create a cursor con = sqlanydb.connect( userid="DBA", password="sql" ) cursor = con.cursor() # Execute a SQL string sql = "SELECT * FROM Employees WHERE EmployeeID=105" cursor.execute(sql) # Get a cursor description which contains column names desc = cursor.description print len(desc) # Fetch all results from the cursor into a sequence, # display the values as column name=value pairs, # and then close the connection rowset = cursor.fetchall() for row in rowset: for col in range(len(desc)): print "%s=%s" % (desc[col][0], row[col] ) print cursor.close() con.close() |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |