ETL Helper v1 released
John Stevenson - BGS via DB-SIG <[email protected]> Wed, 10 Jul 2024 12:48:26 +0000
| Newsgroups | gmane.comp.python.db |
|---|---|
| Message-ID | <LO2P123MB5414681C51F3396690BCA2E581A42@LO2P123MB5414.GBRP123.PROD.OUTLOOK.COM> |
--===============8520380167176081763== Content-Language: en-US Content-Type: multipart/related; boundary="_004_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_"; type="multipart/alternative" --_004_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_ Content-Type: multipart/alternative; boundary="_000_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_" --_000_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, I'm pleased to announce the release of ETL Helper v1. """ ETL Helper makes it easy to run SQL queries via Python and return the resul= ts. It takes care of cursor management, importing drivers and formatting co= nnection strings, while providing memory-efficient functions to read, write= and transform data. This reduces the amount of boilerplate code required t= o manipulate data within relational databases with Python. """ Version 1 includes a documentation website: https://britishgeologicalsurvey= .github.io/etlhelper/ See the release notes for breaking and non-breaking changes: https://github= .com/BritishGeologicalSurvey/etlhelper/releases/tag/v1.0.0 Highlights for version 1 include: + replace cx_Oracle with python-oracledb driver + dictionaries as the default row factory + closer alignment with DBAPI methods + type hints Cheers, John p.s. any feedback on the library from members of this group would be most w= elcome. John A Stevenson PhD MSci FGS Senior Software Developer e [email protected]<mailto:[email protected]> w www.bgs.ac.uk<http://www.bgs.ac.uk/> o orcid.org/0000-0002-2245-1334<https://orcid.org/0000-0002-2245-1334= > British Geological Survey | The Lyell Centre | Research Avenue South | Edin= burgh EH14 4AP | UK [cid:[email protected]] This email and any attachments are intended solely for the use of the named= recipients. If you are not the intended recipient you must not use, disclo= se, copy or distribute this email or any of its attachments and should noti= fy the sender immediately and delete this email from your system. UK Resear= ch and Innovation (UKRI) has taken every reasonable precaution to minimise = risk of this email or any attachments containing viruses or malware but the= recipient should carry out its own virus and malware checks before opening= the attachments. UKRI does not accept any liability for any losses or dama= ges which the recipient may sustain due to presence of any viruses. --_000_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr= osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" = xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:= //www.w3.org/TR/REC-html40"> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"= > <meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)"> <!--[if !mso]><style>v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style><![endif]--><style><!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4;} @font-face {font-family:Aptos;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; font-size:11.0pt; font-family:"Aptos",sans-serif; mso-ligatures:standardcontextual; mso-fareast-language:EN-US;} a:link, span.MsoHyperlink {mso-style-priority:99; color:#467886; text-decoration:underline;} span.EmailStyle17 {mso-style-type:personal-compose; font-family:"Arial",sans-serif; color:windowtext;} .MsoChpDefault {mso-style-type:export-only; font-size:11.0pt; mso-fareast-language:EN-US;} @page WordSection1 {size:612.0pt 792.0pt; margin:72.0pt 72.0pt 72.0pt 72.0pt;} div.WordSection1 {page:WordSection1;} --></style><!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--> </head> <body lang=3D"EN-GB" link=3D"#467886" vlink=3D"#96607D" style=3D"word-wrap:= break-word"> <div class=3D"WordSection1"> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">Hi,<br> <br> I’m pleased to announce the release of ETL Helper v1.<o:p></o:p></spa= n></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">“””<br> ETL Helper makes it easy to run SQL queries via Python and return the resul= ts. It takes care of cursor management, importing drivers and formatting co= nnection strings, while providing memory-efficient functions to read, write= and transform data. This reduces the amount of boilerplate code required to manipulate data within relation= al databases with Python.<br> “””<br> <br> Version 1 includes a documentation website: <a href=3D"https://britishgeolo= gicalsurvey.github.io/etlhelper/"> https://britishgeologicalsurvey.github.io/etlhelper/</a><o:p></o:p></span><= /p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">See the release notes for breaking and non-breaking changes: <a href=3D"https://github.com/BritishGeologicalSurvey/etlhelper/releases/ta= g/v1.0.0"> https://github.com/BritishGeologicalSurvey/etlhelper/releases/tag/v1.0.0</a= ><o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">Highlights for version 1 include:<br> <br> + replace cx_Oracle with python-oracledb driver<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">+ dictionaries as the default row factory<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">+ closer alignment with DBAPI methods<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">+ type hints<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">Cheers,<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">John<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif">p.s. any feedback on the library from members of this group would be m= ost welcome.<o:p></o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal"><span style=3D"font-family:"Arial",sans-se= rif"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:4.6pt"><b><span style=3D"font-si= ze:14.0pt;color:#002D3D;mso-fareast-language:EN-GB">John A Stevenson </span></b><span style=3D"font-size:14.0pt;color:#002D3D;mso-fareast-langua= ge:EN-GB">PhD MSci FGS</span><span style=3D"font-size:14.0pt;mso-ligatures:= none;mso-fareast-language:EN-GB"><o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.1pt;text-autospace:none"><span = lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;color:#1A1= 71C;mso-ligatures:none">Senior Software Developer</span><span lang=3D"EN-US= " style=3D"font-family:"Arial",sans-serif;mso-ligatures:none"><o:= p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.4pt;text-autospace:none"><span = lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;mso-ligatu= res:none"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.5pt;text-autospace:none"><b><sp= an lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;color:#= AC9B6E;mso-ligatures:none">e </span></b><span lang=3D"EN-US" style=3D"font-family:"Arial",sans= -serif;color:#1A171C;mso-ligatures:none"><a href=3D"mailto:[email protected]= "><span style=3D"color:blue">[email protected]</span></a></span><span lang= =3D"EN-US" style=3D"font-family:"Arial",sans-serif;mso-ligatures:= none"><o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.5pt;text-autospace:none"><b><sp= an lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;color:#= AC9B6E;mso-ligatures:none">w </span></b><span lang=3D"EN-US" style=3D"font-family:"Arial",sans= -serif;mso-ligatures:none"><a href=3D"http://www.bgs.ac.uk/"><span style=3D= "color:blue">www.bgs.ac.uk</span></a><o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.5pt;text-autospace:none"><b><sp= an lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;color:#= AC9B6E;mso-ligatures:none">o </span></b><span lang=3D"EN-US" style=3D"font-family:"Arial",sans= -serif;color:#AC9B6E;mso-ligatures:none"><a href=3D"https://orcid.org/0000-= 0002-2245-1334"><span style=3D"color:blue">orcid.org/0000-0002-2245-1334</s= pan></a></span><span lang=3D"EN-US" style=3D"font-family:"Arial",= sans-serif;mso-ligatures:none"><o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.45pt;text-autospace:none"><span= lang=3D"EN-US" style=3D"font-family:"Arial",sans-serif;mso-ligat= ures:none"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"text-autospace:none"><span lang=3D"EN-US" s= tyle=3D"font-family:"Arial",sans-serif;color:#1A171C;mso-ligature= s:none">British Geological Survey | The Lyell Centre | Research Avenue Sout= h | Edinburgh EH14 4AP | UK</span><span lang=3D"EN-US" style=3D"font-family= :"Arial",sans-serif;mso-ligatures:none"><o:p></o:p></span></p> <p class=3D"MsoNormal" style=3D"margin-top:.2pt;text-autospace:none"><span = lang=3D"EN-US" style=3D"font-size:13.0pt;font-family:"Arial",sans= -serif;mso-ligatures:none"><o:p> </o:p></span></p> <p class=3D"MsoNormal" style=3D"text-autospace:none"><span lang=3D"EN-US" s= tyle=3D"font-family:"Arial",sans-serif"><img border=3D"0" width= =3D"166" height=3D"70" style=3D"width:1.7291in;height:.7291in" id=3D"Pictur= e_x0020_2" src=3D"cid:[email protected]"></span><span lang=3D"= EN-US" style=3D"font-size:10.0pt;font-family:"Arial",sans-serif;m= so-ligatures:none"><o:p></o:p></span></p> <p class=3D"MsoNormal"><o:p> </o:p></p> </div> <br> <br> This email and any attachments are intended solely for the use of the named= recipients. If you are not the intended recipient you must not use, disclo= se, copy or distribute this email or any of its attachments and should noti= fy the sender immediately and delete this email from your system. UK Research and Innovation (UKRI) has taken e= very reasonable precaution to minimise risk of this email or any attachment= s containing viruses or malware but the recipient should carry out its own = virus and malware checks before opening the attachments. UKRI does not accept any liability for any losses= or damages which the recipient may sustain due to presence of any viruses.= <br> <br> </body> </html> --_000_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_-- --_004_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_ Content-Type: image/png; name="image001.png" Content-Description: image001.png Content-Disposition: inline; filename="image001.png"; size=10351; creation-date="Wed, 10 Jul 2024 12:48:25 GMT"; modification-date="Wed, 10 Jul 2024 12:48:25 GMT" Content-ID: <[email protected]> Content-Transfer-Encoding: base64 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 --_004_LO2P123MB5414681C51F3396690BCA2E581A42LO2P123MB5414GBRP_-- --===============8520380167176081763== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ DB-SIG maillist - [email protected] https://mail.python.org/mailman/listinfo/db-sig --===============8520380167176081763==--