-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DRAFT] SA20: Add compatibility adapters for psycopg3 and asyncpg dialects #532
Conversation
It introduces the `crate+psycopg://`, `crate+asyncpg://`, and `crate+urllib3://` dialect identifiers. The asynchronous variant of `psycopg` is also supported.
Backlog1. Missing test casesC'est la vie. Please use the provided example programs until we have them. 2. Still using PGDDLCompilerThere is more work to do, to make the hybrid dialect use the sa.Column("x", sa.Integer, primary_key=True, autoincrement=True) CREATE TABLE testdrive (
x SERIAL NOT NULL,
y INT,
PRIMARY KEY (x)
) sqlalchemy.exc.InternalError: (psycopg.errors.InternalError_) Cannot find data type: serial 3. Error
|
About | |
===== | |
Example program to demonstrate how to connect to CrateDB using its SQLAlchemy | |
dialect, and exercise a few basic examples using the low-level table API, this | |
time in asynchronous mode. | |
Specific to the asynchronous mode of SQLAlchemy is the streaming of results: | |
> The `AsyncConnection` also features a "streaming" API via the `AsyncConnection.stream()` | |
> method that returns an `AsyncResult` object. This result object uses a server-side cursor | |
> and provides an async/await API, such as an async iterator. | |
> | |
> -- https://docs.sqlalchemy.org/en/20/orm/extensions/asyncio.html#synopsis-core |
Bug
crate-python/examples/async_streaming.py
Lines 42 to 47 in 387b19f
Bugs | |
==== | |
When using the `psycopg` driver, the program currently croaks like:: | |
sqlalchemy.exc.InternalError: (psycopg.errors.InternalError_) Cannot find portal: c_10479c0a0_1 |
References
This patch has been replaced by two others. |
About
The idea is to unlock the CrateDB dialect for SQLAlchemy with the psycopg3 and asyncpg drivers by introducing corresponding
crate+psycopg://
,crate+asyncpg://
, andcrate+urllib3://
dialect identifiers.The asynchronous variant of
psycopg
is also supported and will be automatically selected when usingcreate_async_engine()
instead ofcreate_engine()
.Installation
Examples
Those example programs exercise basic conversations using the specified drivers.
References