Remote reader, list reader
This commit is contained in:
@ -1,9 +0,0 @@
|
|||||||
from lib.csv_loader import CSVLoader
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
...
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
52
loader_4_remote_reader.py
Normal file
52
loader_4_remote_reader.py
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
import csv
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from lib.csv_loader import CSVLoader, CSVRow
|
||||||
|
from lib.csv_loader.csv_loader import BoolValuePair, CSVRowDefaultConfig
|
||||||
|
|
||||||
|
|
||||||
|
class ActionEnum(IntEnum):
|
||||||
|
INSERT = 0
|
||||||
|
UPDATE = 1
|
||||||
|
DELETE = 2
|
||||||
|
|
||||||
|
|
||||||
|
class AssetRow(CSVRow):
|
||||||
|
asset_id: str
|
||||||
|
asset_action: ActionEnum
|
||||||
|
serial_number: str
|
||||||
|
brand_id: int
|
||||||
|
model_id: int
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
response = requests.get(
|
||||||
|
"https://www.ekirin.com/tmp/asset-import/importer-italy-data.csv"
|
||||||
|
)
|
||||||
|
# iterator will return lines as bytes, so help it figure out it's a string
|
||||||
|
response.encoding = "utf-8"
|
||||||
|
csv_response_iterator = response.iter_lines(decode_unicode=True)
|
||||||
|
|
||||||
|
reader = csv.reader(csv_response_iterator, delimiter=";")
|
||||||
|
csv_loader = CSVLoader[AssetRow](
|
||||||
|
reader=reader,
|
||||||
|
output_model_cls=AssetRow,
|
||||||
|
has_header=True,
|
||||||
|
aggregate_errors=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = csv_loader.read_rows()
|
||||||
|
|
||||||
|
"Results:"
|
||||||
|
for row in result.rows:
|
||||||
|
print(row)
|
||||||
|
|
||||||
|
if result.has_errors():
|
||||||
|
print("Errors:")
|
||||||
|
for error in result.errors:
|
||||||
|
print(f"Line: {error.line_number}: {error.original_error}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
61
loader_5_from_list.py
Normal file
61
loader_5_from_list.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
import csv
|
||||||
|
from enum import IntEnum
|
||||||
|
|
||||||
|
import requests
|
||||||
|
from lib.csv_loader import CSVLoader, CSVRow
|
||||||
|
from lib.csv_loader.csv_loader import BoolValuePair, CSVRowDefaultConfig
|
||||||
|
|
||||||
|
|
||||||
|
class ActionEnum(IntEnum):
|
||||||
|
INSERT = 0
|
||||||
|
UPDATE = 1
|
||||||
|
DELETE = 2
|
||||||
|
|
||||||
|
|
||||||
|
class AssetRow(CSVRow):
|
||||||
|
asset_id: str
|
||||||
|
asset_action: ActionEnum
|
||||||
|
serial_number: str
|
||||||
|
brand_id: int
|
||||||
|
model_id: int
|
||||||
|
|
||||||
|
|
||||||
|
csv_content = [
|
||||||
|
'"asset_id";"asset_action";"serial_number";"brand_id";"model_id";"fiscal_device";"master_system_id";"uid";"data_type";"audit_id"',
|
||||||
|
'"kdHSqoiZhkeuTVBNxraN";0;619424146021142446798498081758;99;1153541;1;"SSsEStytXSjIsinUzftG";"06ce0fed-d80c-4752-8923-544da7c876b6";"CUMULATIVE";"NONE"',
|
||||||
|
'"jrHoRAenIJMUbCIPBtth";0;719320166058188715248485944107;814397;6;0;"";"";"";""',
|
||||||
|
'"tzfBwDrLbIDhWzlfHjLe";0;915703577452730298126736643045;51500;64746;0;"";"";"";""',
|
||||||
|
'"cAPRArDozeDakrTfnCPm";0;971562679443770830776578263954;6;724678;1;"MrFOJXhbwxrisNBpUzOh";"beb2380f-8852-451e-8365-87e6816292ce";"PERIOD";"ID106"',
|
||||||
|
'"tEmFxUedeCvOuKCpgmGu";0;938691817183552061187410560615;5163;4265946;0;"";"";"";""',
|
||||||
|
'"LWIMpOllWJtrJaooBaMP";0;614842602516041785255220888836;6;401143;1;"lCSFLItlCYbEhPnvIDSe";"eac6420e-7d1d-48e9-a601-13b9d6ca8f90";"CUMULATIVE";"ID102"',
|
||||||
|
'"ocRQOONQyixZasLsHyNO";0;706550829841828070469899744448;954;73;0;"";"";"";""',
|
||||||
|
'"vewYeIVZySKAUUkpieAx";0;363107851149183544404834214880;322377;2192890;1;"UfCZtXAnRIWTYJIahZKf";"87212d41-3793-4a78-9b3c-924ad6210cf5";"CUMULATIVE";"DA101"',
|
||||||
|
'"qzYCDCHvVPmdMThIMjUd";0;268178212822631478031448196246;5;86955;0;"";"";"";""',
|
||||||
|
'"ptMtXpAaKvsHTkijcrzl";0;452950079406792377275633884199;996;954395;0;"";"";"";""',
|
||||||
|
'"BZuEjftneISKQcVDEXeK";0;468342155909862741706527121608;312117372;546;0;"";"";"";"" ',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
reader = csv.reader(csv_content, delimiter=";")
|
||||||
|
csv_loader = CSVLoader[AssetRow](
|
||||||
|
reader=reader,
|
||||||
|
output_model_cls=AssetRow,
|
||||||
|
has_header=True,
|
||||||
|
aggregate_errors=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = csv_loader.read_rows()
|
||||||
|
|
||||||
|
"Results:"
|
||||||
|
for row in result.rows:
|
||||||
|
print(row)
|
||||||
|
|
||||||
|
if result.has_errors():
|
||||||
|
print("Errors:")
|
||||||
|
for error in result.errors:
|
||||||
|
print(f"Line: {error.line_number}: {error.original_error}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@ -1 +1,2 @@
|
|||||||
pydantic
|
pydantic
|
||||||
|
requests
|
||||||
|
|||||||
Reference in New Issue
Block a user