Skip to main content

A SQLAlchemy dialect for DataFlex flat-file databases.

Project description

SQLAlchemy-DataFlex

A SQLAlchemy dialect for the FlexODBC driver

Objectives

This dialect is mainly intended to offer an easy way to access the DataFlex flat-file databases of older or EOL'd application-specific softwares. It is designed for use with the ODBC driver available from FlexQuarters

Pre-requisites

  • The FlexODBC driver from FlexQuarters. The library was written and tested against v3, but it should work with v4 as well. The library has been re-written from the ground up and tested to work against the latest available version of FlexODBC (4.0.27.2).

  • 32-bit Python. Neither of the available FlexODBC driver versions support or come in a 64-bit version.

Co-requisites

This dialect requires SQLAlchemy and pyodbc. They are both specified as requirements so pip will install them if they are not already in place. To install separately, just:

pip install -U SQLAlchemy pyodbc

Installation

PyPI-published version:

pip install -U sqlalchemy-dataflex

Absolute bleeding-edge (probably buggy):

pip install -U git+https://github.com/the-wondersmith/sqlalchemy-dataflex

Getting Started

Create an ODBC DSN (Data Source Name) that points to the directory containing your DataFlex FILELIST.cfg and .DAT table.

Tip: For best results, be sure to select the 4-digit date option and the . option for decimals

Then, in your Python app, you can connect to the database via:

from sqlalchemy_dataflex import *
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker


db = create_engine("dataflex+pyodbc://@your_dsn", echo=False)
super_session = sessionmaker(bind=db)
super_session.configure(autoflush=True, autocommit=True, expire_on_commit=True)
session = super_session()

NOTE: It is highly recommended that you use the datatype classes from the package itself in place of the ones that are usually imported from SQLAlchemy. The testing suite doesn't use the SQLAlchemy type classes, so any issues that might arise from their use with the dialect won't be caught by the tests.

The SQLAlchemy Project

SQLAlchemy-DataFlex is based on SQLAlchemy-access, which is part of the [SQLAlchemy Project] (https://www.sqlalchemy.org) and tries to adhere to the same standards and conventions as the core project.

At the time of this writing, it's unlikely that SQLAlchemy-DataFlex actually does comply with the aforementioned standards and conventions. That will be rectified (if and when) in a future release.

Development / Bug reporting / Pull requests

SQLAlchemy maintains a Community Guide detailing guidelines on coding and participating in that project.

While I'm aware that this project could desperately use the participation of anyone else who actually knows what they're doing, DataFlex and the FlexODBC driver are so esoteric and obscure (at the time of this writing) that I don't reasonably expect anyone to actually want to. If I am mistaken in that belief, please God submit a pull request.

This library technically works, but it isn't feature-complete so to speak. The FlexODBC driver only supports a very limited subset of SQL commands and queries, and doesn't always respond to pyodbc's get_info() inquiries the way that pyodbc is expecting. You can see the complete list of the way it responds to all of the available pyodbc get_info() inquiries here. If you are interested in which features are currently lacking or absent in the dialect, see the notes and comments littered throughout the testing suite here.

License

This library is derived almost in its entirety from the SQLAlchemy-Access library written by Gord Thompson. As such, and given that SQLAlchemy-access is distributed under the MIT license, this library is subject to the same licensure and grant of rights as its parent works SQLAlchemy and SQLAlchemy-Access.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sqlalchemy-dataflex-0.1.2.tar.gz (36.6 kB view details)

Uploaded Source

Built Distribution

sqlalchemy_dataflex-0.1.2-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file sqlalchemy-dataflex-0.1.2.tar.gz.

File metadata

  • Download URL: sqlalchemy-dataflex-0.1.2.tar.gz
  • Upload date:
  • Size: 36.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.1 Darwin/18.7.0

File hashes

Hashes for sqlalchemy-dataflex-0.1.2.tar.gz
Algorithm Hash digest
SHA256 3524c47f0822cbbb32d31b5c2b090a2b66f812d72712aa5c69d80c54ace106df
MD5 a4ef7e1767e39f96205868cdf2bb133d
BLAKE2b-256 e1acfaccde7ad228caadb01f4f3999a55491d877b78224d4574abb66e21f4e67

See more details on using hashes here.

File details

Details for the file sqlalchemy_dataflex-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlalchemy_dataflex-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 618e069e88ae20501d7c5054bdb8466782921a2df6ed093eaf7cb6e621f4b7f4
MD5 33b186f0e91fb6cb3fcb7353baf94fe4
BLAKE2b-256 f04fc5b5e6c8de609c9d105378cdcd0c7207a1b7a04ccbe039676917d6e2734a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page