Wie vermeide ich beim Lesen einer Datenbanktabelle mit Polaren ein SchemaError?Python

Python-Programme
Anonymous
 Wie vermeide ich beim Lesen einer Datenbanktabelle mit Polaren ein SchemaError?

Post by Anonymous »

Ich habe eine große Tabelle_TO_LOAD in einer Datenbankdatei my_database.db , die ich versuche, in ein Python -Programm als Polars DataFrame zu lesen. Hier ist der Code, der das Lesen ausführt: < /p>

Code: Select all

import polars as pl

conn = sqlite3.connect('my_database.db')
df = pl.read_database(connection=conn, query='SELECT * FROM table_to_load', infer_schema_length=None)
conn.close()
Wenn ich diesen Code ausführe, löscht pl.read_database den Fehler, "polars.exceptions.SchemaError: Die Supertype von i64 und binär ermittelt." Das Traceback befindet sich am Ende des Postens. Ich habe einige eng verwandte Fragen dazu:

[*] Jede Spalte von Tabelle_TO_LOAD hat überprüfbar bereits einen der drei SQLite3 -Datentypen -Ganzzahl , real und text . Kann ich Polars anweisen, nur ein angemessenes Analogon jedes Datentyps zu verwenden? Beispielsweise scheint i64 ein vernünftiges Analogon von Integer zu sein. (Es sieht so aus, als ob es auch einen Parameter von schema_overrides gibt, aber dies wäre eine Herausforderung, in meiner Anwendung zu verwenden, da meine Tabellenspalten nicht statisch sind.)
Warum im Traceback die Spalte oder die Spalten, die das Schema -EREWERNUNG nicht enthüllen, werden die Spalten, die das Schema -EREUROR generieren, und es gibt es eine Möglichkeit, dies zu fordern. In meinem Fall wäre dies hilfreich, da table_to_load < /code> Hunderte von Spalten enthält.

Code: Select all

Traceback (most recent call last):
File "c:\Users\user0\AppData\Local\Programs\Python\Python312\test_module.py", line 115, in 
main_function()
File "c:\Users\user0\AppData\Local\Programs\Python\Python312\test_module.py", line 54, in main_function
df = pl.read_database(connection=conn, query='SELECT * FROM table_to_load', infer_schema_length=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\io\database\functions.py", line 251, in read_database
).to_polars(
^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\io\database\_executor.py", line 543, in to_polars
frame = frame_init(
^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\io\database\_executor.py", line 300, in _from_rows
return frames if iter_batches else next(frames)  # type: ignore[arg-type]
^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\io\database\_executor.py", line 283, in 
DataFrame(
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\dataframe\frame.py", line 377, in __init__
self._df = sequence_to_pydf(
^^^^^^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\_utils\construction\dataframe.py", line 461, in sequence_to_pydf
return _sequence_to_pydf_dispatcher(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\_utils\construction\dataframe.py", line 674, in _sequence_of_tuple_to_pydf
return _sequence_of_sequence_to_pydf(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\user0\AppData\Local\Programs\Python\Python312\Lib\site-packages\polars\_utils\construction\dataframe.py", line 590, in _sequence_of_sequence_to_pydf
pydf = PyDataFrame.from_rows(
^^^^^^^^^^^^^^^^^^^^^^
polars.exceptions.SchemaError: failed to determine supertype of i64 and binary

[1]: https://www.sqlite.org/datatype3.html

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post