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:&quot;Arial&quot;,sans-se=
rif">Hi,<br>
<br>
I&#8217;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:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif">&#8220;&#8221;&#8221;<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>
&#8220;&#8221;&#8221;<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:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-se=
rif">+ dictionaries as the default row factory<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif">+ closer alignment with DBAPI methods<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif">+ type hints<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif">Cheers,<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif">John<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span style=3D"font-family:&quot;Arial&quot;,sans-se=
rif"><o:p>&nbsp;</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:&quot;Arial&quot;,sans-serif;color:#1A1=
71C;mso-ligatures:none">Senior Software Developer</span><span lang=3D"EN-US=
" style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-serif;mso-ligatu=
res:none"><o:p>&nbsp;</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:&quot;Arial&quot;,sans-serif;color:#=
AC9B6E;mso-ligatures:none">e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b><span lang=3D"EN-US" style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-serif;color:#=
AC9B6E;mso-ligatures:none">w&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b><span lang=3D"EN-US" style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-serif;color:#=
AC9B6E;mso-ligatures:none">o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b><span lang=3D"EN-US" style=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,=
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:&quot;Arial&quot;,sans-serif;mso-ligat=
ures:none"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span lang=3D"EN-US" s=
tyle=3D"font-family:&quot;Arial&quot;,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=
:&quot;Arial&quot;,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:&quot;Arial&quot;,sans=
-serif;mso-ligatures:none"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span lang=3D"EN-US" s=
tyle=3D"font-family:&quot;Arial&quot;,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:&quot;Arial&quot;,sans-serif;m=
so-ligatures:none"><o:p></o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</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==--