diff --git a/README.md b/README.md deleted file mode 100644 index c64eef9..0000000 --- a/README.md +++ /dev/null @@ -1,43 +0,0 @@ - -# SQLBase7-SA - -SQLBase7-SA is a SQLAlchemy driver/dialect for the Centura SQLBase -database, specifically version 7.5.1. - -## About the Project - -From what I can tell, SQLBase is still an actively-developed database, -but it is no longer owned by Centura (see -[here](http://en.wikipedia.org/wiki/Gupta_Technologies)). Also, the -current version (according to [this -page](http://www.unify.com/Products/Data_Management/SQLBase/), as of -25 Apr 2010) is 11.5, so I have no idea how useful this project will -be for versions of SQLBase more recent than 7.5.1. - -This project exists only for the sake of providing read-only access to -legacy data, specifically that used by the -[CAM32](http://www.camcommerce.com/products/CAM32.aspx) Point of Sale -software. It's possible that it could allow writing data, etc., but I -personally won't be adding any such features unless/until the need -arises. - -I don't expect there to be much of anyone using SQLBase 7.5.1 at this -point (besides perhaps other CAM32 users), but if you do happen to -need additional functionality from this project or just have questions -or comments, feel free to drop me a line at lance@edbob.org. - -## Downloads - -The code is released under the [GNU General Public -License](http://www.gnu.org/licenses/gpl.html), version 3. - -It is available at [PyPI](http://pypi.python.org/pypi/SQLBase7-SA), so -the easiest way to get the package is with the command: - - # pip install SQLBase7-SA - -Again, this project is extremely specific to my needs, so I'm only -building eggs for Python 2.5 and 2.6 at this point. If you happen to -need something else then please contact me. - -Copyright © 2010 Lance Edgar diff --git a/setup.py b/setup.py index 75395a7..eb6ec34 100644 --- a/setup.py +++ b/setup.py @@ -1,86 +1,86 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -################################################################################ -# -# SQLBase7-SA -- SQLAlchemy driver/dialect for Centura SQLBase v7 -# Copyright © 2010 Lance Edgar -# -# This file is part of SQLBase7-SA. -# -# SQLBase7-SA is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# SQLBase7-SA is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SQLBase7-SA. If not, see . -# -################################################################################ - - -from setuptools import setup, find_packages - - -import os -execfile(os.path.join(os.path.dirname(__file__), 'sqlbase7_sa', '_version.py')) - - -setup( - name = 'SQLBase7-SA', - version = __version__, - author = 'Lance Edgar', - author_email = 'lance@edbob.org', - url = "https://forgejo.wuttaproject.org/rattail/sqlbase7-sa", - license = "GNU GPL v3", - description = 'SQLAlchemy dialect for Centura SQLBase v7', - long_description = """ -SQLBase7-SA - SQLAlchemy dialect for Centura SQLBase v7 -------------------------------------------------------- - -This package provides a (possibly rudimentary) implementation -of a SQLAlchemy dialect for the Centura SQLBase database -engine. It is only intended (and known) to work with a very -specific version of this database, that version being 7.5.1. -""", - - classifiers = [ - 'Development Status :: 4 - Beta', - 'Environment :: Plugins', - 'Environment :: Win32 (MS Windows)', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: GNU General Public License (GPL)', - 'Natural Language :: English', - 'Operating System :: Microsoft :: Windows', - 'Programming Language :: Python', - 'Programming Language :: Python :: 2.5', - 'Programming Language :: Python :: 2.6', - 'Topic :: Database', - 'Topic :: Software Development :: Libraries :: Python Modules', - ], - - packages = find_packages(), - - install_requires = [ - 'SQLAlchemy>0.5.2', - ], - - entry_points = { - - # SQLAlchemy 0.5 - 'sqlalchemy.databases' : [ - 'sqlbase7 = sqlbase7_sa.sqlbase7_sa05:SQLBase7Dialect_SA05', - ], - - # SQLAlchemy 0.6 - 'sqlalchemy.dialects' : [ - 'sqlbase7 = sqlbase7_sa.sqlbase7_sa06:SQLBase7Dialect_SA06_pyodbc', - ], - }, - - test_suite = 'sqlbase7_sa.tests', - ) +#!/usr/bin/env python +# -*- coding: utf-8 -*- +################################################################################ +# +# SQLBase7-SA -- SQLAlchemy driver/dialect for Centura SQLBase v7 +# Copyright © 2010 Lance Edgar +# +# This file is part of SQLBase7-SA. +# +# SQLBase7-SA is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SQLBase7-SA is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SQLBase7-SA. If not, see . +# +################################################################################ + + +from setuptools import setup, find_packages + + +import os +execfile(os.path.join(os.path.dirname(__file__), 'sqlbase7_sa', '_version.py')) + + +setup( + name = 'SQLBase7-SA', + version = __version__, + author = 'Lance Edgar', + author_email = 'lance@edbob.org', + url = "http://sqlbase7-sa.edbob.org/", + license = "GNU GPL v3", + description = 'SQLAlchemy dialect for Centura SQLBase v7', + long_description = """ +SQLBase7-SA - SQLAlchemy dialect for Centura SQLBase v7 +------------------------------------------------------- + +This package provides a (possibly rudimentary) implementation +of a SQLAlchemy dialect for the Centura SQLBase database +engine. It is only intended (and known) to work with a very +specific version of this database, that version being 7.5.1. +""", + + classifiers = [ + 'Development Status :: 4 - Beta', + 'Environment :: Plugins', + 'Environment :: Win32 (MS Windows)', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: GNU General Public License (GPL)', + 'Natural Language :: English', + 'Operating System :: Microsoft :: Windows', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Topic :: Database', + 'Topic :: Software Development :: Libraries :: Python Modules', + ], + + packages = find_packages(), + + install_requires = [ + 'SQLAlchemy', + ], + + entry_points = { + + # SQLAlchemy 0.5 + 'sqlalchemy.databases' : [ + 'sqlbase7 = sqlbase7_sa.sqlbase7_sa05:SQLBase7Dialect_SA05', + ], + + # SQLAlchemy 0.6 + 'sqlalchemy.dialects' : [ + 'sqlbase7 = sqlbase7_sa.sqlbase7_sa06:SQLBase7Dialect_SA06_pyodbc', + ], + }, + + test_suite = 'sqlbase7_sa.tests', + ) diff --git a/sqlbase7_sa/_version.py b/sqlbase7_sa/_version.py index 5bb4149..729541a 100644 --- a/sqlbase7_sa/_version.py +++ b/sqlbase7_sa/_version.py @@ -23,4 +23,4 @@ ################################################################################ -__version__ = '0.1b5' +__version__ = '0.1b1' diff --git a/sqlbase7_sa/sqlbase7.py b/sqlbase7_sa/sqlbase7.py index 690395c..93c8ef3 100644 --- a/sqlbase7_sa/sqlbase7.py +++ b/sqlbase7_sa/sqlbase7.py @@ -26,7 +26,6 @@ from sqlalchemy.engine.default import DefaultDialect from sqlalchemy import types, and_ from sqlalchemy.sql.expression import Join -from sqlalchemy.sql import visitors, operators, ClauseElement import sqlalchemy @@ -57,12 +56,7 @@ class SQLBase7Compiler(CompilerBase): return self.process(join.left, **kwargs) + ", " + self.process(join.right, **kwargs) def visit_select(self, select, **kwargs): - if self.stack and 'from' in self.stack[-1]: - existingfroms = self.stack[-1]['from'] - else: - existingfroms = None - - froms = select._get_display_froms(existingfroms) + froms = select._get_display_froms() whereclause = self._get_join_whereclause(froms) if whereclause is not None: select = select.where(whereclause) @@ -77,16 +71,7 @@ class SQLBase7Compiler(CompilerBase): clauses = [] def visit_join(join): - if join.isouter: - def visit_binary(binary): - if binary.operator == operators.eq: - if binary.left.table is join.right: - binary.left = _OuterJoinColumn(binary.left) - elif binary.right.table is join.right: - binary.right = _OuterJoinColumn(binary.right) - clauses.append(visitors.cloned_traverse(join.onclause, {}, {'binary':visit_binary})) - else: - clauses.append(join.onclause) + clauses.append(join.onclause) for j in join.left, join.right: if isinstance(j, Join): visit_join(j) @@ -99,16 +84,6 @@ class SQLBase7Compiler(CompilerBase): return and_(*clauses) return None - def visit_outer_join_column(self, vc): - return self.process(vc.column) + "(+)" - - -class _OuterJoinColumn(ClauseElement): - __visit_name__ = 'outer_join_column' - - def __init__(self, column): - self.column = column - class SQLBase7Dialect(DefaultDialect):