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

SQL Anywhere 12.0.1 (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. 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()