Re: Better Database Visibility
Jean-Mark Wright via DB-SIG <[email protected]> Wed, 18 Sep 2024 23:23:35 -0400
| Newsgroups | gmane.comp.python.db |
|---|---|
| Message-ID | <CAA4YZkTg4H1w399Q1C57Moscz4bObq64XJsbkOO2Y63Zs7Fh8g@mail.gmail.com> |
--===============8892972741732422494== Content-Type: multipart/alternative; boundary="00000000000052e66006227073ec" --00000000000052e66006227073ec Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for all the links! I'll check it out. On Mon, Sep 16, 2024 at 3:01=E2=80=AFPM Marc-Andre Lemburg <[email protected]>= wrote: > On 16.09.2024 20:12, Jean-Mark Wright wrote: > > Hi Marc-Andre, > > Thanks for your response. > > My request isn't directly related to Python. I reached out because we're > mostly a Python shop. Python is the primary space I'd be looking to solve > this problem for. I figure some folks would understand some of the > intricacies and challenges of achieving my goals and could help me with > pointers. Possibly I could make some amendments to the database interface= , > or something else. We're using Postgres. > > > There are plenty tools out there for monitoring and tracing databases > > out there, but those are typically not Python-specific. > > We're using DataDog and switching providers isn't probable currently. > There's some space to augment the information we currently have. I'm not > aware of all the possibilities though. That's why I've reached out. > > PostgreSQL provides plenty of statistics to monitor and insight tooling: > > https://www.postgresql.org/docs/current/monitoring-stats.html > > https://www.postgresql.org/docs/current/monitoring.html > > You can access these using psycopg from Python, of course, and write > custom logic to alert you. > > Or you can use Grafana or a similar tool to visualize them (via Prometheu= s > or OpenTelemetry): > > https://grafana.com/solutions/postgresql/monitor/ > > It's also possible to ingest the data in OpenTelemetry, Nagios/Icinga, > Zabbix, Checkmk, etc. > > There also plenty of commercial tools or commercial offerings for the OSS > tools out there. > > Most of these (if not all), give you alerting, visuals, and data recordin= g. > > This is a vast space and where to dig deeper depends a lot on your use > cases, architecture and data sizes. > > E.g. if you're into tracing query plans, you could have a look at PG > Ferret: > > https://github.com/ChrisBellew/pg-ferret > > Now, getting all this data is easy. What is hard, is making sense of it := -) > > > > On Sat, Sep 14, 2024 at 5:00=E2=80=AFPM Marc-Andre Lemburg <[email protected]= m> wrote: > >> Hi Jean-Mark, >> >> this list is about Python database connectivity. How does your request >> related to Python ? You also don't mention the database in question. >> >> There are plenty tools out there for monitoring and tracing databases >> out there, but those are typically not Python specific. >> >> Thanks. >> >> >> On 12.09.2024 14:29, Jean-Mark Wright via DB-SIG wrote: >> > Hi, >> > I'm aiming to improve database trace quality to better understand >> what's >> > happening in our database. I'd love to get index information, query >> > planning information, performance statistics and richer errors into ou= r >> > database spans. I don't know what the best layer is for this enrichmen= t >> > (e.g. database module, OpenTelemetry, in our application, etc...). >> > >> > I'm looking for the following specifically: >> > >> > * Thoughts on the possibilities of getting this information and wher= e >> > it would come from? >> > * Thoughts on whether this enrichment aligns with the database >> > specification's purpose? >> > * Any contacts who could help answer or provide more questions. >> > >> > >> > This article >> > < >> https://jaywhy13.hashnode.dev/dear-editor-we-need-better-database-observ= ability> >> captures the issues I've faced in greater detail. >> > >> > Thanks in advance for your help! >> > >> > >> > -- >> > *JEAN-MARK **WRIGHT* | Staff Engineer >> > <https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg= > >> > <https://www.waveapps.com/><https://www.waveapps.com/>< >> https://www.waveapps.com/><https://www.waveapps.com/>< >> https://www.waveapps.com/> >> > >> > Join our community onFacebook <http://www.facebook.com/waveHQ>,LinkedI= n >> >> > <http://www.linkedin.com/company/1196866>, orInstagram >> > <https://www.instagram.com/wave_hq> >> > >> > This message and any attachments are intended only for the use of the >> > addressee and should be considered confidential. If you are not an >> > intended recipient, you may not review, copy or distribute this >> message. >> > If you have received this communication in error or would like to stop >> > receiving these emails, please notify the sender by replying to this >> > email. Wave is located at 500-155 Queens Quay East, Box 3, Toronto ON, >> > M5A 0W4. >> > >> > _______________________________________________ >> > DB-SIG maillist - [email protected] >> > https://mail.python.org/mailman/listinfo/db-sig >> >> -- >> Marc-Andre Lemburg >> eGenix.com >> >> Professional Python Services directly from the Experts (#1, Sep 14 2024) >> >>> Python Projects, Coaching and Support ... https://www.egenix.com= / >> >>> Python Product Development ... https://consulting.egenix.com= / >> ________________________________________________________________________ >> >> ::: We implement business ideas - efficiently in both time and costs ::: >> >> eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 >> D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg >> Registered at Amtsgericht Duesseldorf: HRB 46611 >> https://www.egenix.com/company/contact/ >> https://www.malemburg.com/ >> >> > > -- > *JEAN-MARK **WRIGHT* | Staff Engineer > <https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg> > <https://www.waveapps.com/> > > Join our community on Facebook <http://www.facebook.com/waveHQ>, LinkedIn > <http://www.linkedin.com/company/1196866>, or Instagram > <https://www.instagram.com/wave_hq> > > This message and any attachments are intended only for the use of the > addressee and should be considered confidential. If you are not an intend= ed > recipient, you may not review, copy or distribute this message. If you ha= ve > received this communication in error or would like to stop receiving thes= e > emails, please notify the sender by replying to this email. Wave is locat= ed > at 500-155 Queens Quay East, Box 3, Toronto ON, M5A 0W4. > > -- > Marc-Andre Lemburg > eGenix.com > > Professional Python Services directly from the Experts (#1, Sep 16 2024) > >>> Python Projects, Coaching and Support ... https://www.egenix.com/ > >>> Python Product Development ... https://consulting.egenix.com/ > ________________________________________________________________________ > > ::: We implement business ideas - efficiently in both time and costs ::: > > eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 > D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg > Registered at Amtsgericht Duesseldorf: HRB 46611 > https://www.egenix.com/company/contact/ > https://www.malemburg.com/ > > --=20 *JEAN-MARK **WRIGHT* | Staff Engineer <https://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg> <https://www.waveapps.com/> <https://www.waveapps.com/> <https://www.waveapps.com/> <https://www.waveapps.com/> <https://www.waveapps.com/> Join our community on Facebook <http://www.facebook.com/waveHQ>, LinkedIn <http://www.linkedin.com/company/1196866>, or Instagram <https://www.instagram.com/wave_hq> This message and any attachments are intended only for the use of the addressee and should be considered confidential. If you are not an intended recipient, you may not review, copy or distribute this message. If you have received this communication in error or would like to stop receiving these emails, please notify the sender by replying to this email. Wave is located at 500-155 Queens Quay East, Box 3, Toronto ON, M5A 0W4. --00000000000052e66006227073ec Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Thanks for all the links! I'll check it out.<br></div>= <br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon= , Sep 16, 2024 at 3:01=E2=80=AFPM Marc-Andre Lemburg <<a href=3D"mailto:= [email protected]">[email protected]</a>> wrote:<br></div><blockquote class=3D= "gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(2= 04,204,204);padding-left:1ex"><u></u> =20 =20 =20 <div> <div>On 16.09.2024 20:12, Jean-Mark Wright wrote:<br> </div> <blockquote type=3D"cite"> <div dir=3D"ltr"> <div>Hi Marc-Andre,</div> <div><br> </div> <div>Thanks for your response.<br> </div> <div><br> </div> <div>My request isn't directly related to Python. I reached out because we're mostly a Python shop. Python is the primary space I'd be looking to solve this problem for. I figure some folks would understand some of the intricacies and challenges of achieving my goals and could help me with pointers. Possibly I could make some amendments to the database interface, or something else. We're using Postgres.</div> <div><br> </div> <div>> There are plenty tools out there for monitoring and tracing databases <br> > out there, but those are typically not Python-specific.</div= > <div><br> </div> <div>We're using DataDog and switching providers isn't prob= able currently. There's some space to augment the information we currently have. I'm not aware of all the possibilities though= . That's why I've reached out.<br> </div> </div> </blockquote> <p>PostgreSQL provides plenty of statistics to monitor and insight tooling:<br> </p> <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://www.postgresql.org/docs/curren= t/monitoring-stats.html" target=3D"_blank">https://www.postgresql.org/docs/= current/monitoring-stats.html</a></p> <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://www.postgresql.org/docs/curren= t/monitoring.html" target=3D"_blank">https://www.postgresql.org/docs/curren= t/monitoring.html</a><br> </p> <p>You can access these using psycopg from Python, of course, and write custom logic to alert you.</p> <p>Or you can use Grafana or a similar tool to visualize them (via Prometheus or OpenTelemetry):</p> <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://grafana.com/solutions/postgres= ql/monitor/" target=3D"_blank">https://grafana.com/solutions/postgresql/mon= itor/</a></p> <p>It's also possible to ingest the data in OpenTelemetry, Nagios/Icinga, Zabbix, Checkmk, etc.</p> <p>There also plenty of commercial tools or commercial offerings for the OSS tools out there.<br> </p> <p>Most of these (if not all), give you alerting, visuals, and data recording.</p> <p>This is a vast space and where to dig deeper depends a lot on your use cases, architecture and data sizes.</p> <p>E.g. if you're into tracing query plans, you could have a look a= t PG Ferret:</p> <p>=C2=A0=C2=A0=C2=A0 <a href=3D"https://github.com/ChrisBellew/pg-ferr= et" target=3D"_blank">https://github.com/ChrisBellew/pg-ferret</a></p> <p>Now, getting all this data is easy. What is hard, is making sense of it :-)<br> </p> <p><br> </p> <blockquote type=3D"cite"><br> <div class=3D"gmail_quote"> <div dir=3D"ltr" class=3D"gmail_attr">On Sat, Sep 14, 2024 at 5:00=E2=80=AFPM Marc-Andre Lemburg <<a href=3D"mailto:mal@egen= ix.com" target=3D"_blank">[email protected]</a>> wrote:<br> </div> <blockquote class=3D"gmail_quote">Hi Jean-Mark,<br> <br> this list is about Python database connectivity. How does your request <br> related to Python ? You also don't mention the database in question.<br> <br> There are plenty tools out there for monitoring and tracing databases <br> out there, but those are typically not Python specific.<br> <br> Thanks.<br> <br> <br> On 12.09.2024 14:29, Jean-Mark Wright via DB-SIG wrote:<br> > Hi,<br> > I'm aiming to improve database trace quality to better understand what's <br> > happening in our database. I'd love to get index information, query <br> > planning information, performance statistics and richer errors into our <br> > database spans. I don't know what the best layer is for this enrichment <br> > (e.g. database module, OpenTelemetry, in our application, etc...).<br> > <br> > I'm looking for the following specifically:<br> > <br> >=C2=A0 =C2=A0* Thoughts on the possibilities of getting this information and where<br> >=C2=A0 =C2=A0 =C2=A0it would come from?<br> >=C2=A0 =C2=A0* Thoughts on whether this enrichment aligns wit= h the database<br> >=C2=A0 =C2=A0 =C2=A0specification's purpose?<br> >=C2=A0 =C2=A0* Any contacts who could help answer or provide = more questions.<br> > <br> > <br> > This article <br> > <<a href=3D"https://jaywhy13.hashnode.dev/dear-editor-we-= need-better-database-observability" rel=3D"noreferrer" target=3D"_blank">ht= tps://jaywhy13.hashnode.dev/dear-editor-we-need-better-database-observabili= ty</a>> captures the issues I've faced in greater detail.<br> > <br> > Thanks in advance for your help!<br> > <br> > <br> > -- <br> > *JEAN-MARK **WRIGHT* | Staff Engineer<br> > <<a href=3D"https://s3.amazonaws.com/wave-buoyant/public/= Wave_logo_RGB-109x30.svg" rel=3D"noreferrer" target=3D"_blank">https://s3.a= mazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg</a>><br> > <<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer"= target=3D"_blank">https://www.waveapps.com/</a>><<a href=3D"https://= www.waveapps.com/" rel=3D"noreferrer" target=3D"_blank">https://www.waveapp= s.com/</a>><<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer" = target=3D"_blank">https://www.waveapps.com/</a>><<a href=3D"https://w= ww.waveapps.com/" rel=3D"noreferrer" target=3D"_blank">https://www.waveapps= .com/</a>><<a href=3D"https://www.waveapps.com/" rel=3D"noreferrer" t= arget=3D"_blank">https://www.waveapps.com/</a>><br> > <br> > Join our community onFacebook <<a href=3D"http://www.face= book.com/waveHQ" rel=3D"noreferrer" target=3D"_blank">http://www.facebook.c= om/waveHQ</a>>,LinkedIn <br> > <<a href=3D"http://www.linkedin.com/company/1196866" rel= =3D"noreferrer" target=3D"_blank">http://www.linkedin.com/company/1196866</= a>>,=C2=A0orInstagram <br> > <<a href=3D"https://www.instagram.com/wave_hq" rel=3D"nor= eferrer" target=3D"_blank">https://www.instagram.com/wave_hq</a>><br> > <br> > This message and any attachments are intended only for the use of the <br> > addressee and should be considered confidential. If you are not an <br> > intended recipient, you may not review, copy or distribute this message. <br> > If you have received this communication in error or would like to stop <br> > receiving these emails, please notify the sender by replying to this <br> > email. Wave is located at 500-155 Queens Quay East, Box 3, Toronto ON, <br> > M5A 0W4.<br> > <br> > _______________________________________________<br> > DB-SIG maillist=C2=A0 -=C2=A0 <a href=3D"mailto:DB-SIG@pytho= n.org" target=3D"_blank">[email protected]</a><br> > <a href=3D"https://mail.python.org/mailman/listinfo/db-sig" = rel=3D"noreferrer" target=3D"_blank">https://mail.python.org/mailman/listin= fo/db-sig</a><br> <br> -- <br> Marc-Andre Lemburg<br> eGenix.com<br> <br> Professional Python Services directly from the Experts (#1, Sep 14 2024)<br> =C2=A0>>> Python Projects, Coaching and Support ...=C2= =A0 =C2=A0 <a href=3D"https://www.egenix.com/" rel=3D"noreferrer" target=3D= "_blank">https://www.egenix.com/</a><br> =C2=A0>>> Python Product Development ...=C2=A0 =C2=A0 = =C2=A0 =C2=A0 <a href=3D"https://consulting.egenix.com/" rel=3D"noreferrer"= target=3D"_blank">https://consulting.egenix.com/</a><br> ________________________________________________________________________<br= > <br> ::: We implement business ideas - efficiently in both time and costs :::<br> <br> =C2=A0 =C2=A0 eGenix.com Software, Skills and Services GmbH=C2=A0 Pastor-Loeh-Str.48<br> =C2=A0 =C2=A0 =C2=A0D-40764 Langenfeld, Germany. CEO Dipl.-Math. = Marc-Andre Lemburg<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Registered at Amtsgeric= ht Duesseldorf: HRB 46611<br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <a href= =3D"https://www.egenix.com/company/contact/" rel=3D"noreferrer" target=3D"_= blank">https://www.egenix.com/company/contact/</a><br> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 <a href=3D"https://www.malemburg.com/" rel=3D"noreferrer" tar= get=3D"_blank">https://www.malemburg.com/</a><br> <br> </blockquote> </div> <br> <br> <span class=3D"gmail_signature_prefix">-- </span><br> <div dir=3D"ltr" class=3D"gmail_signature"> <div> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div dir=3D"ltr"> <div><span><b>JEA= N-MARK </b></span><span>= <b>WRIGHT</b>=C2=A0</span>|=C2=A0<span>Staff Engineer</span></= div> <div><a href=3D"h= ttps://s3.amazonaws.com/wave-buoyant/public/Wave_logo_RGB-109x30.svg" targe= t=3D"_blank"><img></a></div> <div><a href=3D"h= ttps://www.waveapps.com/" target=3D"_blank"><img></a><br> <br> </div> <div>Join our community on<span= >=C2=A0</span><a href=3D"http://www.facebook.com/waveHQ" target=3D"_blank">= Facebook</a>,<span>=C2=A0</span><a href=3D"http://www.linkedin.com/company/= 1196866" target=3D"_blank">LinkedIn</a>,=C2=A0or<span>=C2=A0</span><a href= =3D"https://www.instagram.com/wave_hq" target=3D"_blank">Instagram</a></div= > </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <div><span><br> </span></div> <div><span>This message and any attachments are intended only for the use of the addressee and should be considered confidential. If you are not an intended recipient, you may not review, copy or distribute this message. If you have received this communication in error or would like to stop receiving these emails, please notify the sender by replying to this email. Wave is located at 500-</sp= an><span>155 Queens Quay East, Box 3, Toronto ON, M5A 0W4.</span></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </blockquote> <pre cols=3D"72">--=20 Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Experts (#1, Sep 16 2024) >>> Python Projects, Coaching and Support ... <a href=3D"https:= //www.egenix.com/" target=3D"_blank">https://www.egenix.com/</a> >>> Python Product Development ... <a href=3D"https://consu= lting.egenix.com/" target=3D"_blank">https://consulting.egenix.com/</a> ________________________________________________________________________ ::: We implement business ideas - efficiently in both time and costs ::: =20 eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 <a href=3D"https://www.egenix.com/company/contact/" target= =3D"_blank">https://www.egenix.com/company/contact/</a> <a href=3D"https://www.malemburg.com/" target=3D"_blan= k">https://www.malemburg.com/</a> </pre> </div> </blockquote></div><br clear=3D"all"><br><span class=3D"gmail_signature_pre= fix">-- </span><br><div dir=3D"ltr" class=3D"gmail_signature"><div style=3D= "font-size:12.8px;background-color:rgb(255,255,255)"><div dir=3D"ltr"><div = dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"= ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><d= iv dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir= =3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr= "><div dir=3D"ltr"><div style=3D"font-size:12.8px"><div dir=3D"ltr" style= =3D"font-family:arial,sans-serif"><div dir=3D"ltr"><div dir=3D"ltr"><div di= r=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"lt= r"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div= dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D= "ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><div><span style= =3D"font-size:12.8px"><b><font color=3D"#4c8ff0">JEAN-MARK </font></b></spa= n><span style=3D"font-size:12.8px"><font color=3D"#4C8FF0"><b>WRIGHT</b></f= ont><font color=3D"#01959e">=C2=A0</font></span><font color=3D"#606060" sty= le=3D"font-size:small">|=C2=A0</font><span style=3D"font-size:12.8px"><font= color=3D"#8a8a8b">Staff Engineer</font></span></div><div style=3D"color:rg= b(80,0,80)"><a href=3D"https://s3.amazonaws.com/wave-buoyant/public/Wave_lo= go_RGB-109x30.svg" target=3D"_blank"><img></a></div><div style=3D"color:rgb= (80,0,80);font-size:12.8px"><a href=3D"https://www.waveapps.com/" target=3D= "_blank"></a><a href=3D"https://www.waveapps.com/" target=3D"_blank"></a><a= href=3D"https://www.waveapps.com/" target=3D"_blank"></a><a href=3D"https:= //www.waveapps.com/" target=3D"_blank"></a><a href=3D"https://www.waveapps.= com/" target=3D"_blank"><img src=3D"https://s3.amazonaws.com/wave-prod-emai= l-assets/miscellaneous/wave-gmail-signature-DO-NOT-DELETE.png" style=3D"wid= th: 150px; height: 41px;"></a><br><br></div><div style=3D"font-size:12.8px"= ><font style=3D"font-size:12px">Join our community on</font><span style=3D"= color:rgb(80,0,80);font-size:12px">=C2=A0</span><a href=3D"http://www.faceb= ook.com/waveHQ" style=3D"font-size:12px" target=3D"_blank"><font color=3D"#= 4c8ff0">Facebook</font></a><font color=3D"#919191" style=3D"color:rgb(80,0,= 80);font-size:12px">,</font><span style=3D"color:rgb(80,0,80);font-size:12p= x">=C2=A0</span><a href=3D"http://www.linkedin.com/company/1196866" style= =3D"font-size:12px" target=3D"_blank"><font color=3D"#4c8ff0">LinkedIn</fon= t></a><font style=3D"font-size:12px">,=C2=A0</font><font style=3D"font-size= :12px">or</font><span style=3D"font-size:12px">=C2=A0</span><a href=3D"http= s://www.instagram.com/wave_hq" target=3D"_blank"><font color=3D"#2e8ff0">In= stagram</font></a></div></div></div></div></div></div></div></div></div></d= iv></div></div></div></div></div></div></div></div></div></div></div><div s= tyle=3D"font-family:arial,sans-serif;color:rgb(80,0,80);font-size:12.8px"><= span><br></span></div><div style=3D"font-size:12.8px"><span><font color=3D"= #bebebe" face=3D"Trebuchet">This message and any attachments are intended o= nly for the use of the addressee and should be considered confidential. If = you are not an intended recipient, you may not review, copy or distribute t= his message. If you have received this communication in error or would like= to stop receiving these emails, please notify the sender by replying to th= is email. Wave is located at 500-</font></span><span style=3D"color:rgb(190= ,190,190);font-family:Trebuchet">155 Queens Quay East, Box 3, Toronto ON, M= 5A 0W4.</span></div></div></div></div></div></div></div></div></div></div><= /div></div></div></div></div></div></div></div></div></div></div></div></di= v></div> --00000000000052e66006227073ec-- --===============8892972741732422494== 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 --===============8892972741732422494==--