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. Hinweis: Der Gehaltsbetrag, der beim Ausführen der Anwendung angezeigt wird, ist eine Ganzzahl.
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 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |