From info at egenix.com Fri Nov 6 17:51:52 2009 From: info at egenix.com (eGenix Team: M.-A. Lemburg) Date: Fri, 06 Nov 2009 17:51:52 +0100 Subject: [DB-SIG] ANN: eGenix mxODBC - Python ODBC Database Interface 3.0.4 Message-ID: <4AF45428.5030306@egenix.com> ________________________________________________________________________ ANNOUNCING eGenix.com mxODBC - Python ODBC Database Interface Version 3.0.4 mxODBC is our commercially supported Python extension providing ODBC database connectivity to Python applications on Windows, Unix and BSD platforms This announcement is also available on our web-site for online reading: http://www.egenix.com/company/news/eGenix-mxODBC-3.0.4-GA.html ________________________________________________________________________ INTRODUCTION mxODBC provides an easy-to-use, high-performance, reliable and robust Python interface to ODBC compatible databases such as MS SQL Server, MS Access, Oracle Database, IBM DB2 and Informix , Sybase ASE and Sybase Anywhere, MySQL, PostgreSQL, SAP MaxDB and many more: http://www.egenix.com/products/python/mxODBC/ The "eGenix mxODBC - Python ODBC Database Interface" product is a commercial extension to our open-source eGenix mx Base Distribution: http://www.egenix.com/products/python/mxBase/ ________________________________________________________________________ NEWS mxODBC 3.0.4 is a patch-level release and includes the following updates: * Fixed Mac OS X Intel builds: The Mac OS X builds for 3.0.3 had a problem finding the installed iODBC administrator libraries on Intel Macs. This problem has now been resolved. Note: If you are having trouble finding the ODBC administrator on Mac OS X 10.6 (Snow Leopard), this is because the initial release of 10.6 did not include the administrator GUI. You can download the update with the ODBC administrator from the Apple support site: http://support.apple.com/downloads/ODBC_Administrator_Tool_for_Mac_OS_X Since mxODBC for Mac OS X is currently only available for 32-bit PPC and Intel platforms, be sure to use the Python.org 32-bit Mac OS X installer for installing Python and 32-bit ODBC drivers on Snow Leopard. * Enhanced support detecting platform mismatches: We have added better support for detecting mismatches between the downloaded prebuilt archive and the installation target configuration to the prebuilt archive installers. The setup.py script now prints an error message explaining the mismatch rather then trying to rebuild the extension. For the full set of changes please check the mxODBC change log: http://www.egenix.com/products/python/mxODBC/changelog.html For the full set of features mxODBC has to offer, please see: http://www.egenix.com/products/python/mxODBC/#Features ________________________________________________________________________ DOWNLOADS The download archives and instructions for installing the package can be found at: http://www.egenix.com/products/python/mxODBC/ In order to use the eGenix mxODBC package you will first need to install the eGenix mx Base package: http://www.egenix.com/products/python/mxBase/ ________________________________________________________________________ UPGRADING You are encouraged to upgrade to this latest mxODBC release, especially if you are using MS SQL Server or Informix as database server. Customers who have purchased mxODBC 3.0 licenses can download and install this patch-level release on top of their existing installations. The licenses will continue to work with version 3.0.4. Users of mxODBC 1.0 and 2.0 will have to purchase new licenses from our online shop in order to upgrade to mxODBC 3.0.4. You can request 30-day evaluation licenses by visiting our web-site at http://www.egenix.com/products/python/mxODBC/#Evaluation or writing to sales at egenix.com, stating your name (or the name of the company) and the number of eval licenses that you need. _______________________________________________________________________ SUPPORT Commercial support for this product is available from eGenix.com. Please see http://www.egenix.com/services/support/ for details about our support offerings. _______________________________________________________________________ INFORMATION About Python (http://www.python.org/): Python is an object-oriented Open Source programming language which runs on all modern platforms. By integrating ease-of-use, clarity in coding, enterprise application connectivity and rapid application design, Python establishes an ideal programming platform for today's IT challenges. About eGenix (http://www.egenix.com/): eGenix is a software project, consulting and product company focusing on expert services and professional quality products for companies, Python users and developers. Enjoy, -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Nov 06 2009) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: 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 http://www.egenix.com/company/contact/ From temotor at gmail.com Wed Nov 11 09:23:52 2009 From: temotor at gmail.com (Sergey Shepelev) Date: Wed, 11 Nov 2009 11:23:52 +0300 Subject: [DB-SIG] PEP 249 Message-ID: <2d8fb9950911110023t6bcb0d71qa39a6e91ef70143e@mail.gmail.com> Hello. Cursor objects. Regarding .fetch* methods family when there are no more rows. It is clearly specified that .fetchone() must return None and .fetchmany() must return empty sequence. But for .fetchall() it is unspecified. Now there is this myconnpy pure Python DB-API implementation for MySQL and its cursor.fetchall() returns None. https://bugs.launchpad.net/myconnpy/+bug/480360 Conformance with fetchmany seems good to me. What is official answer on this? From mal at egenix.com Wed Nov 11 10:28:42 2009 From: mal at egenix.com (M.-A. Lemburg) Date: Wed, 11 Nov 2009 10:28:42 +0100 Subject: [DB-SIG] PEP 249 In-Reply-To: <2d8fb9950911110023t6bcb0d71qa39a6e91ef70143e@mail.gmail.com> References: <2d8fb9950911110023t6bcb0d71qa39a6e91ef70143e@mail.gmail.com> Message-ID: <4AFA83CA.6050402@egenix.com> Sergey Shepelev wrote: > Hello. > > Cursor objects. > Regarding .fetch* methods family when there are no more rows. > It is clearly specified that .fetchone() must return None and > .fetchmany() must return empty sequence. > > But for .fetchall() it is unspecified. .fetchall() should return an empty list. > Now there is this myconnpy pure Python DB-API implementation for MySQL > and its cursor.fetchall() returns None. > https://bugs.launchpad.net/myconnpy/+bug/480360 > > Conformance with fetchmany seems good to me. What is official answer on this? The spec is not as clear in this respect as for .fetchmany(), but since you can use .fetchmany() and .fetchall() interchangeably on the cursor, the same logic applies to both of them: .fetchmany([size=cursor.arraysize]) Fetch the next set of rows of a query result, returning a sequence of sequences (e.g. a list of tuples). An empty sequence is returned when no more rows are available. .fetchall() Fetch all (remaining) rows of a query result, returning them as a sequence of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute can affect the performance of this operation. -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Nov 11 2009) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try our new mxODBC.Connect Python Database Interface for free ! :::: 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 http://www.egenix.com/company/contact/