The Wayback Machine - https://web.archive.org/web/20210204230018/https://github.com/encode/databases/pull/226
Skip to content
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

Fixed SQLAlchemy DDL statements #226

Merged
merged 5 commits into from Aug 20, 2020
Merged

Fixed SQLAlchemy DDL statements #226

merged 5 commits into from Aug 20, 2020

Conversation

@FadedCoder
Copy link
Contributor

@FadedCoder FadedCoder commented Jul 14, 2020

DDL statements made with SQLAlchemy (such as sqlalchemy.schema.CreateTable) used to have issues such as:

Traceback (most recent call last):
  File "../database.py", line 50, in <module>
    loop.run_until_complete(prepare_tables())
  File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    return future.result()
  File "../database.py", line 40, in prepare_tables
    resp = await engine.fetch_one(query)
  File "/home/user/Documents/Projects/Python-Projects/test/databases/databases/core.py", line 146, in fetch_one
    return await connection.fetch_one(query, values)
  File "/home/user/Documents/Projects/Python-Projects/test/databases/databases/core.py", line 244, in fetch_one
    return await self._connection.fetch_one(built_query)
  File "/home/user/Documents/Projects/Python-Projects/test/databases/databases/backends/postgres.py", line 159, in fetch_one
    query, args, result_columns = self._compile(query)
  File "/home/user/Documents/Projects/Python-Projects/test/databases/databases/backends/postgres.py", line 205, in _compile
    compiled_params = sorted(compiled.params.items())
AttributeError: 'NoneType' object has no attribute 'items'

This PR fixes the issue for postgres, aiopg, and mysql backends.

@tomchristie
Copy link
Member

@tomchristie tomchristie commented Jul 14, 2020

Heya looks like there's a type error being reported by the test suite?... https://github.com/encode/databases/pull/226/checks?check_run_id=868682403#step:6:54

@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Jul 14, 2020

Heya looks like there's a type error being reported by the test suite?... https://github.com/encode/databases/pull/226/checks?check_run_id=868682403#step:6:54

This is a weird one, I'm not able to reproduce it locally... and it says there's a incompatible type in backends/sqlite.py which wasn't even modified. Does it depend on backends/mysql.py, or backends/postgres.py or backends/sqlite.py?

@FadedCoder FadedCoder force-pushed the FadedCoder:master branch from cce301b to 84454e3 Jul 14, 2020
@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Jul 14, 2020

@tomchristie um I tried doing the tests on my PC and both this PR and the master branch has the same error:

databases/backends/sqlite.py:81: error: Incompatible types in assignment (expression has type "Connection", variable has type "None")
@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Jul 14, 2020

Seems like aiosqlite added type hinting too (omnilib/aiosqlite@bc94ad9). I can fix sqlite.py but that'd be a separate PR.

@vmarkovtsev
Copy link
Contributor

@vmarkovtsev vmarkovtsev commented Jul 20, 2020

This closes #40

@vmarkovtsev
Copy link
Contributor

@vmarkovtsev vmarkovtsev commented Jul 20, 2020

@FadedCoder The tests still fail, can you PTAL?

@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Jul 20, 2020

@vmarkovtsev hey, there was an issue in code formatting (was using autopep8 earlier). Now all the tests pass :D

Copy link
Contributor

@vmarkovtsev vmarkovtsev left a comment

Two things:

  1. We need the tests.
  2. Is it possible to follow the snippet in #40 (comment) so that we have to touch less code and move the responsibility higher?
@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Jul 20, 2020

Sure, will implement the changes soon.

@vmarkovtsev
Copy link
Contributor

@vmarkovtsev vmarkovtsev commented Aug 10, 2020

@FadedCoder friendly ping

@FadedCoder
Copy link
Contributor Author

@FadedCoder FadedCoder commented Aug 11, 2020

@vmarkovtsev Implemented the changes :)

By the way, DDLElement is a subclass of ClauseElement so we don't have to do typing.Union[ClauseElement, DDLElement] for strict typing.

Copy link
Contributor

@vmarkovtsev vmarkovtsev left a comment

LGTM. Let's give a chance to somebody else to review this (@tomchristie?). If there is no reaction within a week, I'll merge as-is.

@vmarkovtsev vmarkovtsev merged commit 4088e42 into encode:master Aug 20, 2020
3 checks passed
3 checks passed
Python 3.6
Details
Python 3.7
Details
Python 3.8
Details
vmarkovtsev added a commit to vmarkovtsev/databases that referenced this pull request Oct 19, 2020
Changelog:

- Use backend native fetch_val() implementation when available (encode#132)
- Replace psycopg2-binary with psycopg2 (encode#198) (encode#204)
- Speed up PostgresConnection fetch() and iterate() (encode#193)
- Access asyncpg Record field by key on raw query (encode#207)
- Fix type hinting for sqlite backend (encode#227)
- Allow setting min_size and max_size in postgres DSN (encode#210)
- Add option pool_recycle in postgres DSN (encode#233)
- Fix SQLAlchemy DDL statements (encode#226)
- Make fetch_val call fetch_one for type conversion (encode#246)
- Allow extra transaction options (encode#242)
- Unquote username and password in Databaseurl(encode#248)
vmarkovtsev added a commit to vmarkovtsev/databases that referenced this pull request Oct 19, 2020
Changelog:

- Use backend native fetch_val() implementation when available (encode#132)
- Replace psycopg2-binary with psycopg2 (encode#198) (encode#204)
- Speed up PostgresConnection fetch() and iterate() (encode#193)
- Access asyncpg Record field by key on raw query (encode#207)
- Fix type hinting for sqlite backend (encode#227)
- Allow setting min_size and max_size in postgres DSN (encode#210)
- Add option pool_recycle in postgres DSN (encode#233)
- Fix SQLAlchemy DDL statements (encode#226)
- Make fetch_val call fetch_one for type conversion (encode#246)
- Allow extra transaction options (encode#242)
- Unquote username and password in Databaseurl(encode#248)
@vmarkovtsev vmarkovtsev mentioned this pull request Oct 19, 2020
vmarkovtsev added a commit to vmarkovtsev/databases that referenced this pull request Oct 20, 2020
Changelog:

- Use backend native fetch_val() implementation when available (encode#132)
- Replace psycopg2-binary with psycopg2 (encode#198) (encode#204)
- Speed up PostgresConnection fetch() and iterate() (encode#193)
- Access asyncpg Record field by key on raw query (encode#207)
- Fix type hinting for sqlite backend (encode#227)
- Allow setting min_size and max_size in postgres DSN (encode#210)
- Add option pool_recycle in postgres DSN (encode#233)
- Fix SQLAlchemy DDL statements (encode#226)
- Make fetch_val call fetch_one for type conversion (encode#246)
- Allow extra transaction options (encode#242)
- Unquote username and password in Databaseurl(encode#248)
vmarkovtsev added a commit to vmarkovtsev/databases that referenced this pull request Oct 20, 2020
Changelog:

- Use backend native fetch_val() implementation when available (encode#132)
- Replace psycopg2-binary with psycopg2 (encode#198) (encode#204)
- Speed up PostgresConnection fetch() and iterate() (encode#193)
- Access asyncpg Record field by key on raw query (encode#207)
- Fix type hinting for sqlite backend (encode#227)
- Allow setting min_size and max_size in postgres DSN (encode#210)
- Add option pool_recycle in postgres DSN (encode#233)
- Fix SQLAlchemy DDL statements (encode#226)
- Make fetch_val call fetch_one for type conversion (encode#246)
- Allow extra transaction options (encode#242)
- Unquote username and password in Databaseurl(encode#248)
vmarkovtsev added a commit that referenced this pull request Oct 20, 2020
Changelog:

- Use backend native fetch_val() implementation when available (#132)
- Replace psycopg2-binary with psycopg2 (#198) (#204)
- Speed up PostgresConnection fetch() and iterate() (#193)
- Access asyncpg Record field by key on raw query (#207)
- Fix type hinting for sqlite backend (#227)
- Allow setting min_size and max_size in postgres DSN (#210)
- Add option pool_recycle in postgres DSN (#233)
- Fix SQLAlchemy DDL statements (#226)
- Make fetch_val call fetch_one for type conversion (#246)
- Allow extra transaction options (#242)
- Unquote username and password in Databaseurl(#248)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked issues

Successfully merging this pull request may close these issues.

None yet

3 participants
HTTPS · web.archive.org
← Home