Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Python-Unterstützung » Python-Skripten, die sqlanydb verwenden

 

Datenbanktypkonvertierung

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()