diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-04-07 14:15:43 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-04-16 13:35:55 -0400 |
commit | 2f617f56f2acdce00b88f746c403cf5ed66d4d27 (patch) | |
tree | 0962f2c43c1a361135ecdab933167fa0963ae58a /lib/sqlalchemy/cextension | |
parent | bd303b10e2bf69169f07447c7272fc71ac931f10 (diff) | |
download | sqlalchemy-2f617f56f2acdce00b88f746c403cf5ed66d4d27.tar.gz |
Create initial 2.0 engine implementation
Implemented the SQLAlchemy 2 :func:`.future.create_engine` function which
is used for forwards compatibility with SQLAlchemy 2. This engine
features always-transactional behavior with autobegin.
Allow execution options per statement execution. This includes
that the before_execute() and after_execute() events now accept
an additional dictionary with these options, empty if not
passed; a legacy event decorator is added for backwards compatibility
which now also emits a deprecation warning.
Add some basic tests for execution, transactions, and
the new result object. Build out on a new testing fixture
that swaps in the future engine completely to start with.
Change-Id: I70e7338bb3f0ce22d2f702537d94bb249bd9fb0a
Fixes: #4644
Diffstat (limited to 'lib/sqlalchemy/cextension')
-rw-r--r-- | lib/sqlalchemy/cextension/utils.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/sqlalchemy/cextension/utils.c b/lib/sqlalchemy/cextension/utils.c index a437adc70..fb7fbe4e6 100644 --- a/lib/sqlalchemy/cextension/utils.c +++ b/lib/sqlalchemy/cextension/utils.c @@ -23,6 +23,9 @@ the MIT License: http://www.opensource.org/licenses/mit-license.php static PyObject * distill_params(PyObject *self, PyObject *args) { + // TODO: pass the Connection in so that there can be a standard + // method for warning on parameter format + PyObject *multiparams, *params; PyObject *enclosing_list, *double_enclosing_list; PyObject *zero_element, *zero_element_item; @@ -44,6 +47,8 @@ distill_params(PyObject *self, PyObject *args) if (multiparam_size == 0) { if (params != Py_None && PyDict_Size(params) != 0) { + // TODO: this is keyword parameters, emit parameter format + // deprecation warning enclosing_list = PyList_New(1); if (enclosing_list == NULL) { return NULL; @@ -152,6 +157,8 @@ distill_params(PyObject *self, PyObject *args) } } else { + // TODO: this is multiple positional params, emit parameter format + // deprecation warning zero_element = PyTuple_GetItem(multiparams, 0); if (PyObject_HasAttrString(zero_element, "__iter__") && !PyObject_HasAttrString(zero_element, "strip") |