dBASE und Datentypen
Verfasst: Dienstag 11. März 2008, 10:53
Ich hab irgenwie Probleme, in einem DBase-File Spalten anzulegen, die Zahlen beinhalten. Datum Und String sind irgendwie kein Problem. Hab mir auch schon den Code aus dem dbf-Modul angeguckt, aber werde daraus auch nicht so ganz schlau.
Ich kann sogar bei nem Integer Länge des Integers und Anzahl der Dezimalstellen(?) angeben.
Wenn ich nun aber ein Float oder allgemeines Numeric Field erstellen will, MUSS ich zusätzlich zu Anzahl der DEzimalstellen(optional), die Länge angeben. Das verwirrt mich. Wozu soll das gut sein? Und warum?
Wenn ich das frei lasse, oder einfach nichts übergebe, bekomme ich Fehlermeldungen:
oder
Wenn ich statt "F", "N" benutze, ist es das gleiche
Code: Alles auswählen
# Funktioniert alles:
db_file.addField(("Spalte_Char","C",8))
db_file.addField(("Spalte_Date","D"))
db_file.addField(("Spalte_Integer","I"))
Wenn ich nun aber ein Float oder allgemeines Numeric Field erstellen will, MUSS ich zusätzlich zu Anzahl der DEzimalstellen(optional), die Länge angeben. Das verwirrt mich. Wozu soll das gut sein? Und warum?
Wenn ich das frei lasse, oder einfach nichts übergebe, bekomme ich Fehlermeldungen:
Code: Alles auswählen
dbfile.addField(("Spalte_float","F"))
Traceback (most recent call last):
File "C:\<string>", line 1, in ?
File "C:\Python24\Lib\site-packages\dbfpy\dbf.py", line 226, in addField
self.header.addField(*defs)
File "C:\Python24\Lib\site-packages\dbfpy\header.py", line 214, in addField
self.recordLength += self._addField(*defs)
File "C:\Python24\Lib\site-packages\dbfpy\header.py", line 189, in _addField
ignoreErrors=self._ignore_errors)
File "C:\Python24\Lib\site-packages\dbfpy\fields.py", line 80, in __init__
raise ValueError("[%s] Length isn't specified" % name)
ValueError: [TEST5] Length isn't specified
Code: Alles auswählen
dbfile.addField(("Spalte_float","F","",3))
File "C:\<string>", line 1, in ?
File "C:\Python24\Lib\site-packages\dbfpy\dbf.py", line 226, in addField
self.header.addField(*defs)
File "C:\Python24\Lib\site-packages\dbfpy\header.py", line 214, in addField
self.recordLength += self._addField(*defs)
File "C:\Python24\Lib\site-packages\dbfpy\header.py", line 189, in _addField
ignoreErrors=self._ignore_errors)
File "C:\Python24\Lib\site-packages\dbfpy\fields.py", line 81, in __init__
length = int(length)
ValueError: invalid literal for int():