0
假設我使用SQLAlchemy將通用.csv文件上載到mssql服務器。推測列類型SQLAlchemy
我該如何推斷每一列的類型?似乎必須明確聲明列,例如{'myvar':Column(Integer)}。有沒有辦法讓SQLAlchemy或其他庫自行推斷每個列的數據類型?
VB的功能「TransferText」可以做到這一點,但我想在Python中做到這一點。
假設我使用SQLAlchemy將通用.csv文件上載到mssql服務器。推測列類型SQLAlchemy
我該如何推斷每一列的類型?似乎必須明確聲明列,例如{'myvar':Column(Integer)}。有沒有辦法讓SQLAlchemy或其他庫自行推斷每個列的數據類型?
VB的功能「TransferText」可以做到這一點,但我想在Python中做到這一點。
根據您的數據,您只需使用ast.literal_eval
即可離開。
import ast
assert isinstance(ast.literal_eval('1'), int)
assert isinstance(ast.literal_eval('1.0', float)
assert isinstance(ast.literal_eval('True', bool)
assert isinstance(ast.literal_eval('"foobar"', basestring)
你也可以使用一些更復雜的如messytables它提供了一個type_guess
方法。
如果你有一個類'YourClass'那麼你可以檢查'YourClass.your_attribute.type.python_type' – fedorqui
不幸的是,不會在我的情況下工作。通用.csv文件不包含任何類型或類信息 - 只有逗號分隔的字符串。我可以讀取頭文件以獲取列的數量和名稱,並創建一個類,其中每個參數默認情況下的類型爲None或String - 但我無法推斷出一個字符串是否可能代表另一種數據類型。 –
你上傳*到*是什麼?也就是說,你能從目標表中獲取類型信息嗎? –