Change Log

  • 0.5.0 - Release implementing support for MSSQL. by u555923 at 2025-09-20 10:46:05

    Changes relative to 0.5.0b1:
    - The MSSQL 'call_procedure_update' method now returns -1 as the row ID
      for a duplicated row on update USP calls. Note: The table must have a
      UNIQUE constraint for this to be triggered.
    - A 'flat' parameter has been added to the 'execute_query' method for
      flattening the list of tuples result for single element responses.
    
    Testing:
    - Testing completed successfully with 100% code coverage.
    
    Released: 2025-09-20
    
  • 0.5.0b1 - Beta release for version 0.5.0.dev3. by j_berendt at 2025-09-11 10:28:13

    Released: 2025-09-11
    
  • 0.5.0.dev3 - Various bug fixes and improvements for MSSQL. by u555923 at 2025-07-25 14:56:43

    Changes:
    - Addressed an issue when a USP does not have any parameters to return.
    - Introduced exit codes to the backup routine for MSSQL.
    - Addressed an issue in reporting SQLAlchemy errors.
    
    Testing:
    - Testing for new MSSQL functionality complete. 100% coverage for MSSQL
      code.
    
    Released: n/a
    
  • 0.5.0.dev2 - Included table backup functionality for the MSSQL interface. by u555923 at 2025-07-24 10:44:12

    MSSQL table backup:
    - Functionality has been added to the MSSQL interface for backing up any
      given table in the database to the *backup database*. Note this is
      *not* a filesystem backup.
    - A 'database_exists' function has been added to the interface primarily
      to facilitate the backup, but also for general use.
    
    MSSQL table checksum:
    - A function has been added to the MSSQL interface enabling the user to
      calculate a table checksum (easily).
    - Aside, this function will also be used by the MSSQL table backup logic
      to verify if a table was successfully backed up.
    
    Other changes:
    - Updated the 'execute_query' method to include a 'commit' argument,
      which defaults to True for backwards compaiability.
    
    Fixes:
    - Consistently applied the name 'mssql' for all MS SQL Server related
      object items in the interface; rather than variations such as
      'sqlserver'.
    
    Testing:
    - The tests for the MSSQL interface have been updated for 100% code
      coverage. All MSSQL interface tests complete successfully.
    - Testing for MySQL and SQLite completed successfully (on a different
      environment) with 98% code coverage. The remaining 2% relates to the
      MSSQL and non-supported database engine routing in the
      database.DBInterface.__new__ method.
    
    Released: n/a
    
  • 0.5.0.dev1 - Introduction of Microsoft SQL Server support. by u555923 at 2025-07-14 14:09:00

    SQL Server:
    - A database interface has been added for MS SQL Server support, via
      pyodbc.
    
    Testing:
    - The test suite has been updated to test the new MS SQL Server
      interface, with all tests completing successfully.
    - Testing for MySQL and SQLite completed (on a different environment) with
      98% code coverage. The missing 2% relates to SQL Server and
      non-supported database engine routing in the database.DBInterface.__new__
      method.
    
    Released: n/a
    
  • 0.4.2 - Updated dependency versions to address Snyk vulnerability issues. by j_berendt at 2024-11-12 17:18:36

    Released: 2024-11-12
    
  • 0.4.1 - Release for version 0.4.1b1. by j_berendt at 2024-09-27 21:22:18

    Testing:
    - Tests complete successfully with 100% code coverage.
    - Pylintr completes successfully at 100%.
    
    Released: 2024-09-27
    
  • 0.4.1b1 - Addressed issue in stored procedure call. by j_berendt at 2024-09-26 09:55:31

    DBLIB-8: Stored procedure call
    - Added a commit call to the basic call_procedure method for MySQL and
      Oracle. Previously, any data added by a USP using this call was not
      committed.
    
    Testing:
    - Added a test case to verify the data added using the call_procedure
      method is committed.
    - All tests complete successfully with 100% test coverage.
    
    Released: 2024-09-26
    
  • 0.4.0rc1 - Release candidate for PyPI upload. Library renamed. by j_berendt at 2024-08-07 16:16:41

    Library rename:
    - To resolve a PyPI naming conflict, the library has been renamed from
      dblib to dbilib.
    - The *exact* reason for the conflict is unknown as there are no existing
      libraries with the name "dblib".
    
    Changes:
    - Migrated from setup.py to pyproject.toml.
    - Added a README.md file for GitHub and PyPI, based on the homepage of the
      existing documentation.
    - Uploaded documentation to Read the Docs.
    
    Testing:
    - Tests complete successfully with 100% code coverage.
    
    Released: 2024-08-07
    
  • 0.4.0.dev4 - Relocated LICENSE file. by j_berendt at 2024-03-14 15:38:58

    DBLIB-6:
    - The LICENSE file has been moved to the top level of the project.
    
    Released: 2024-03-14
    
  • 0.4.0.dev3 - Bug fix. by j_berendt at 2024-03-07 15:00:33

    DBLIB-5: Update results to DataFrame method
    - Addressed a StopIteration error thrown when attempting to convert results
      to a DataFrame, when the results object is empty.
    
    Released: 2024-03-07
    
  • 0.4.0.dev2 - Security updates and Python 3.10 uplift. by j_berendt at 2024-02-28 16:24:58

    DBLIB-3: Security
    Security updates have been applied to the _dbi_base.execute_query method.
    Checks have been put in place to help prevent injection-like statments.
    - A SecurityWarning is raised if the statement contains multiple
      semi-colon characters. Therefore only allowing single-statement to be
      executed.
    - A SecurityWarning is raised if the statement contains a comment
      delimiter.
    
    DBLIB-4: Python 3.10
    - Type hinting has been updated in all modules IAW PEP-604.
      - This uses a pipe syntax, rather than a typing.Union keyword.
    - Minimum version of Python required is now 3.10.
    
    Testing:
    - Test cases have been added to cover the security checks.
    - Test cases pass successfully with 100% code coverage.
    
    Released: 2024-02-28
    
  • 0.4.0.dev1 - Enable database interface class specialisation. by j_berendt at 2024-02-26 12:07:14

    DBLIB-2:
    - The database.DBInterface class has been updated to include *args and
      **kwargs in the class creation.
      - The __new__ method remains in place due to the way classes must be
        created.
    - The _db_base._DBIBase class has been updated to include a database_name
      property, which is propogated through all subclasses.
    
    Testing:
    - Test cases updated to ensure 100% code coverage.
    - Minor updates to the testing setup/teardown methods for robustness.
    
    Documentation:
    - Updated to include a code example for 'pseudo-inheritance' to enable
      subclass specialisation.
    - Updated the usage example to remove the subclass' call to __init__, as
      the __init__ method will *not* be called.
    
    Released: 2024-02-26
    
  • 0.3.0.dev3 - HTML documentation suite created. by j_berendt at 2023-10-10 09:49:23

    Released: 2023-10-25
    
  • 0.3.0.dev2 - Docstring updates. by j_berendt at 2023-07-17 10:09:09

    Issued and bug fixes:
    - DBLIB-1: Updated the docstrings in _dbi_mysql to show the parameter
      name as 'proc', rather than 'proc_name'. to accurately match the name
      of the parameter.
    
    Released: 2023-07-17
    
  • 0.3.0.dev1 - Addition of the SQLite database interface. by j_berendt at 2023-06-07 08:05:55

    This is a *development release* intended for the development and testing
    if the calling libraries.
    
    Released: 2023-06-07
    
  • 0.2.0.dev4 - Refactored module code base. Other fixes. by j_berendt at 2023-05-23 15:57:48

    This is a *development release* intended for the development and testing
    of the calling libraries.
    
    Purpose:
    - The purpose of this change is to *properly* segregate the
      database-specific code from the generalised code.
    - When running the library in an Oracle (and non-MySQL) environment,
      the imports were getting crossed. This forced the installation of
      MySQL driver libraries, although they would not be used in practice.
    
    Modules:
    - The MySQL-specific code has been removed from the _db_base module and
      placed in the _dbi_mysql module; where it always should have been.
    - The __init__ method has been removed from the database-specific
      modules, enabling fallback to the parent module.
    - Other minor (supporting) changes in the module layout.
    
    Fixes:
    - The database-name tests in the database.DBInterface class have been
      updated to prevent a module import error during the tests.
    
    Released: 2023-05-24
    
  • 0.2.0.dev3 - Fixes to the database.DBInterface.__new__ method. by j_berendt at 2023-05-22 16:01:11

    DBInterface.__new__ method:
    - New class creation failed when 'other' parameters were passed into
      the class constructor.
    - Added the *args and **kwargs parameters, along with the 'connstr'
      parameter.
    - Changed the import test for MySQL from 'mysql.connector' to simply
      'mysql', as the '.connector' test throws a ModuleNotFounderror if
      mysql is not installed.
    
    Released: 2023-05-23
    
  • 0.2.0.dev2 - Updated to remove the required dependencies. by j_berendt at 2023-05-22 14:47:12

    This is a *development release* intended for the development and testing
    of the calling libraries.
    
    Dependencies:
    - The following libraries are no longer required by the installation.
      This is to enable dblib to be easily deployed onto an environment where
      only one of the database engines is used.
    - Obviously, the appropriate database driver must be installed before
      using dblib to access that database.
      - cx-oracle
      - mysql-connector
    
    Released: 2023-05-23
    
  • 0.2.0.dev1 - Added Oracle database suppport. by j_berendt at 2023-05-18 14:51:00

    Modules:
    - The interface modules have been redesigned to facilitate code reuse
      and Oracle database support.
    
    Released: 2023-05-22
    
  • 0.1.0.dev2 - Testing suite and minor code updates. by j_berendt at 2023-05-17 13:01:09

    This is a *development release* intended for the development and testing
    of the calling libraries.
    
    Testing:
    - A complete testing suite has been added and achieves 100% test
      coverage.
    
    database.py:
    - Minor code tweaks have been applied to patch bugs found while
      developing the test suite.
    
    Released: 2023-05-18
    
  • 0.1.0.dev1 - Initial development of the database module is complete. by j_berendt at 2023-05-16 16:50:33

    This is a *development release* intended for the development and testing
    of the calling libraries.
    
    database.py
    - The core database module was taken from s3ddb v0.8.0.dev1, and modified
      to extend functionality with the view to removing the database code
      from the s3ddb and adourlib libraries.
    - The intended design is to have the s3ddb.database.Database and
      adourlib.tools.database.Database classes inherit the
      dblib.database.Database class, and specialise only if required.
      Otherwise, the core database interface functionality will reside in this
      lower-level library.
    
    Released: 2023-05-17
    
  • 0.1.0.dev1 - Initial commit for the dblib project. by j_berendt at 2023-05-16 16:24:40