Title: Index on a table containing columns with no sort order fails while reflecting the table · Issue #399 · googleapis/python-spanner-sqlalchemy · GitHub
Open Graph Title: Index on a table containing columns with no sort order fails while reflecting the table · Issue #399 · googleapis/python-spanner-sqlalchemy
X Title: Index on a table containing columns with no sort order fails while reflecting the table · Issue #399 · googleapis/python-spanner-sqlalchemy
Description: Environment details Programming language: Python OS: debian (can be reproduce on any OS) Language runtime version: Python 3.11.7 Package version: sqlalchemy-spanner==1.7.0, SQLAlchemy==1.4.49 Steps to reproduce Install Packages: pip inst...
Open Graph Description: Environment details Programming language: Python OS: debian (can be reproduce on any OS) Language runtime version: Python 3.11.7 Package version: sqlalchemy-spanner==1.7.0, SQLAlchemy==1.4.49 Steps...
X Description: Environment details Programming language: Python OS: debian (can be reproduce on any OS) Language runtime version: Python 3.11.7 Package version: sqlalchemy-spanner==1.7.0, SQLAlchemy==1.4.49 Steps...
Opengraph URL: https://github.com/googleapis/python-spanner-sqlalchemy/issues/399
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Index on a table containing columns with no sort order fails while reflecting the table","articleBody":"#### Environment details\r\n\r\n - Programming language: Python\r\n - OS: debian (can be reproduce on any OS)\r\n - Language runtime version: Python 3.11.7\r\n - Package version: sqlalchemy-spanner==1.7.0, SQLAlchemy==1.4.49\r\n\r\n#### Steps to reproduce\r\n\r\n 1. Install Packages:\r\n\r\n```\r\n pip install SQLAlchemy==1.4.49 sqlalchemy-spanner==1.7.0\r\n\r\n```\r\n\r\n 2. Setup Engine:\r\n\r\n```\r\nfrom sqlalchemy import create_engine\r\n\r\n# Replace the following with your actual database connection string\r\nDATABASE_URL = \"spanner+spanner:///projects/YOUR_PROJECT_ID/instances/YOUR_INSTANCE_ID/databases/YOUR_DATABASE_ID\"\r\nengine = create_engine(DATABASE_URL)\r\n```\r\n\r\n 3. Setup Database:\r\n\r\n```\r\n# SQL for creating the table\r\ncreate_table_sql = \"\"\"\r\nCREATE TABLE clicks (\r\n id INT64 NOT NULL,\r\n date DATE NOT NULL,\r\n url_hash STRING(32) NOT NULL,\r\n url STRING(MAX) NOT NULL,\r\n) PRIMARY KEY(id, date DESC, url_hash);\r\n\"\"\"\r\n\r\n# SQL for creating the index\r\ncreate_index_sql = \"\"\"\r\nCREATE INDEX idx_on_clicks ON clicks(id, date DESC, url_hash) STORING (url);\r\n\"\"\"\r\n\r\n# Execute the SQL commands\r\nwith engine.connect() as connection:\r\n connection.execute(create_table_sql)\r\n connection.execute(create_index_sql)\r\n\r\n```\r\n\r\n 4. Reflect Database:\r\n\r\n```\r\nfrom sqlalchemy import MetaData, inspect\r\n\r\ninspector = inspect(engine)\r\nmeta = MetaData(bind=engine)\r\nMetaData.reflect(meta, views=True)\r\n```\r\n\r\n 5. Exception from Step 4:\r\n\r\n```\r\n File \"/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/schema.py\", line 614, in __new__\r\n table._init(name, metadata, *args, **kw)\r\n File \"/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/schema.py\", line 689, in _init\r\n self._autoload(\r\n File \"/usr/local/lib/python3.11/site-packages/sqlalchemy/sql/schema.py\", line 724, in _autoload\r\n conn_insp.reflect_table(\r\n File \"/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py\", line 807, in reflect_table\r\n self._reflect_indexes(\r\n File \"/usr/local/lib/python3.11/site-packages/sqlalchemy/engine/reflection.py\", line 1071, in _reflect_indexes\r\n if k in c_sorting:\r\n ^^^^^^^^^^^^^^\r\nTypeError: argument of type 'NoneType' is not iterable\r\n```\r\n\r\n**Note:** SQLAlchemy-2.0.30 also has the same issue.","author":{"url":"https://github.com/mmahmed","@type":"Person","name":"mmahmed"},"datePublished":"2024-06-11T17:21:03.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/399/python-spanner-sqlalchemy/issues/399"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:f4cf84dc-fcbf-035c-ef5a-f14d158692ec |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9038:2E7285:2619245:3422AE2:6A4ED7EA |
| html-safe-nonce | 32bf7266a04ef4d98af0dc43ca39470dd957ef71db2535fd759bc6adef389d54 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5MDM4OjJFNzI4NToyNjE5MjQ1OjM0MjJBRTI6NkE0RUQ3RUEiLCJ2aXNpdG9yX2lkIjoiNzM3Nzg0Mzg3MTY1NTMxOTUzMCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | a7af5ee61ab65c696eaaad00e5ae2cd228ba98dfb06c2b69cb1da957a2d431fb |
| hovercard-subject-tag | issue:2346924992 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/googleapis/python-spanner-sqlalchemy/399/issue_layout |
| twitter:image | https://opengraph.githubassets.com/1d190b16aae207592d8c19e578a718ff0a7acd269a6e220b0209f77a54b1d22a/googleapis/python-spanner-sqlalchemy/issues/399 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/1d190b16aae207592d8c19e578a718ff0a7acd269a6e220b0209f77a54b1d22a/googleapis/python-spanner-sqlalchemy/issues/399 |
| og:image:alt | Environment details Programming language: Python OS: debian (can be reproduce on any OS) Language runtime version: Python 3.11.7 Package version: sqlalchemy-spanner==1.7.0, SQLAlchemy==1.4.49 Steps... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | mmahmed |
| hostname | github.com |
| expected-hostname | github.com |
| None | 41b6ab3ba6d20a71766ac245b5a4a94c6fc672a9cd4da7d44c1b33ab8bf6a21c |
| turbo-cache-control | no-preview |
| go-import | github.com/googleapis/python-spanner-sqlalchemy git https://github.com/googleapis/python-spanner-sqlalchemy.git |
| octolytics-dimension-user_id | 16785467 |
| octolytics-dimension-user_login | googleapis |
| octolytics-dimension-repository_id | 335511641 |
| octolytics-dimension-repository_nwo | googleapis/python-spanner-sqlalchemy |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 335511641 |
| octolytics-dimension-repository_network_root_nwo | googleapis/python-spanner-sqlalchemy |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | c37fe3e3f5f306900bd5b6bee97463f66c938b2c |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width