| Metadata-Version: 2.1 | |
| Name: SQLAlchemy | |
| Version: 2.0.36 | |
| Summary: Database Abstraction Library | |
| Home-page: https://www.sqlalchemy.org | |
| Author: Mike Bayer | |
| Author-email: mike_mp@zzzcomputing.com | |
| License: MIT | |
| Project-URL: Documentation, https://docs.sqlalchemy.org | |
| Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/ | |
| Classifier: Development Status :: 5 - Production/Stable | |
| Classifier: Intended Audience :: Developers | |
| Classifier: License :: OSI Approved :: MIT License | |
| Classifier: Operating System :: OS Independent | |
| Classifier: Programming Language :: Python | |
| Classifier: Programming Language :: Python :: 3 | |
| Classifier: Programming Language :: Python :: 3.7 | |
| Classifier: Programming Language :: Python :: 3.8 | |
| Classifier: Programming Language :: Python :: 3.9 | |
| Classifier: Programming Language :: Python :: 3.10 | |
| Classifier: Programming Language :: Python :: 3.11 | |
| Classifier: Programming Language :: Python :: 3.12 | |
| Classifier: Programming Language :: Python :: 3.13 | |
| Classifier: Programming Language :: Python :: Implementation :: CPython | |
| Classifier: Programming Language :: Python :: Implementation :: PyPy | |
| Classifier: Topic :: Database :: Front-Ends | |
| Requires-Python: >=3.7 | |
| Description-Content-Type: text/x-rst | |
| License-File: LICENSE | |
| Requires-Dist: typing-extensions >=4.6.0 | |
| Requires-Dist: greenlet !=0.4.17 ; python_version < "3.13" and (platform_machine == "aarch64" or (platform_machine == "ppc64le" or (platform_machine == "x86_64" or (platform_machine == "amd64" or (platform_machine == "AMD64" or (platform_machine == "win32" or platform_machine == "WIN32")))))) | |
| Requires-Dist: importlib-metadata ; python_version < "3.8" | |
| Provides-Extra: aiomysql | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'aiomysql' | |
| Requires-Dist: aiomysql >=0.2.0 ; extra == 'aiomysql' | |
| Provides-Extra: aioodbc | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'aioodbc' | |
| Requires-Dist: aioodbc ; extra == 'aioodbc' | |
| Provides-Extra: aiosqlite | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'aiosqlite' | |
| Requires-Dist: aiosqlite ; extra == 'aiosqlite' | |
| Requires-Dist: typing-extensions !=3.10.0.1 ; extra == 'aiosqlite' | |
| Provides-Extra: asyncio | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'asyncio' | |
| Provides-Extra: asyncmy | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'asyncmy' | |
| Requires-Dist: asyncmy !=0.2.4,!=0.2.6,>=0.2.3 ; extra == 'asyncmy' | |
| Provides-Extra: mariadb_connector | |
| Requires-Dist: mariadb !=1.1.10,!=1.1.2,!=1.1.5,>=1.0.1 ; extra == 'mariadb_connector' | |
| Provides-Extra: mssql | |
| Requires-Dist: pyodbc ; extra == 'mssql' | |
| Provides-Extra: mssql_pymssql | |
| Requires-Dist: pymssql ; extra == 'mssql_pymssql' | |
| Provides-Extra: mssql_pyodbc | |
| Requires-Dist: pyodbc ; extra == 'mssql_pyodbc' | |
| Provides-Extra: mypy | |
| Requires-Dist: mypy >=0.910 ; extra == 'mypy' | |
| Provides-Extra: mysql | |
| Requires-Dist: mysqlclient >=1.4.0 ; extra == 'mysql' | |
| Provides-Extra: mysql_connector | |
| Requires-Dist: mysql-connector-python ; extra == 'mysql_connector' | |
| Provides-Extra: oracle | |
| Requires-Dist: cx-oracle >=8 ; extra == 'oracle' | |
| Provides-Extra: oracle_oracledb | |
| Requires-Dist: oracledb >=1.0.1 ; extra == 'oracle_oracledb' | |
| Provides-Extra: postgresql | |
| Requires-Dist: psycopg2 >=2.7 ; extra == 'postgresql' | |
| Provides-Extra: postgresql_asyncpg | |
| Requires-Dist: greenlet !=0.4.17 ; extra == 'postgresql_asyncpg' | |
| Requires-Dist: asyncpg ; extra == 'postgresql_asyncpg' | |
| Provides-Extra: postgresql_pg8000 | |
| Requires-Dist: pg8000 >=1.29.1 ; extra == 'postgresql_pg8000' | |
| Provides-Extra: postgresql_psycopg | |
| Requires-Dist: psycopg >=3.0.7 ; extra == 'postgresql_psycopg' | |
| Provides-Extra: postgresql_psycopg2binary | |
| Requires-Dist: psycopg2-binary ; extra == 'postgresql_psycopg2binary' | |
| Provides-Extra: postgresql_psycopg2cffi | |
| Requires-Dist: psycopg2cffi ; extra == 'postgresql_psycopg2cffi' | |
| Provides-Extra: postgresql_psycopgbinary | |
| Requires-Dist: psycopg[binary] >=3.0.7 ; extra == 'postgresql_psycopgbinary' | |
| Provides-Extra: pymysql | |
| Requires-Dist: pymysql ; extra == 'pymysql' | |
| Provides-Extra: sqlcipher | |
| Requires-Dist: sqlcipher3-binary ; extra == 'sqlcipher' | |
| SQLAlchemy | |
| ========== | |
| |PyPI| |Python| |Downloads| | |
| .. |PyPI| image:: https://img.shields.io/pypi/v/sqlalchemy | |
| :target: https://pypi.org/project/sqlalchemy | |
| :alt: PyPI | |
| .. |Python| image:: https://img.shields.io/pypi/pyversions/sqlalchemy | |
| :target: https://pypi.org/project/sqlalchemy | |
| :alt: PyPI - Python Version | |
| .. |Downloads| image:: https://static.pepy.tech/badge/sqlalchemy/month | |
| :target: https://pepy.tech/project/sqlalchemy | |
| :alt: PyPI - Downloads | |
| The Python SQL Toolkit and Object Relational Mapper | |
| Introduction | |
| ------------- | |
| SQLAlchemy is the Python SQL toolkit and Object Relational Mapper | |
| that gives application developers the full power and | |
| flexibility of SQL. SQLAlchemy provides a full suite | |
| of well known enterprise-level persistence patterns, | |
| designed for efficient and high-performing database | |
| access, adapted into a simple and Pythonic domain | |
| language. | |
| Major SQLAlchemy features include: | |
| * An industrial strength ORM, built | |
| from the core on the identity map, unit of work, | |
| and data mapper patterns. These patterns | |
| allow transparent persistence of objects | |
| using a declarative configuration system. | |
| Domain models | |
| can be constructed and manipulated naturally, | |
| and changes are synchronized with the | |
| current transaction automatically. | |
| * A relationally-oriented query system, exposing | |
| the full range of SQL's capabilities | |
| explicitly, including joins, subqueries, | |
| correlation, and most everything else, | |
| in terms of the object model. | |
| Writing queries with the ORM uses the same | |
| techniques of relational composition you use | |
| when writing SQL. While you can drop into | |
| literal SQL at any time, it's virtually never | |
| needed. | |
| * A comprehensive and flexible system | |
| of eager loading for related collections and objects. | |
| Collections are cached within a session, | |
| and can be loaded on individual access, all | |
| at once using joins, or by query per collection | |
| across the full result set. | |
| * A Core SQL construction system and DBAPI | |
| interaction layer. The SQLAlchemy Core is | |
| separate from the ORM and is a full database | |
| abstraction layer in its own right, and includes | |
| an extensible Python-based SQL expression | |
| language, schema metadata, connection pooling, | |
| type coercion, and custom types. | |
| * All primary and foreign key constraints are | |
| assumed to be composite and natural. Surrogate | |
| integer primary keys are of course still the | |
| norm, but SQLAlchemy never assumes or hardcodes | |
| to this model. | |
| * Database introspection and generation. Database | |
| schemas can be "reflected" in one step into | |
| Python structures representing database metadata; | |
| those same structures can then generate | |
| CREATE statements right back out - all within | |
| the Core, independent of the ORM. | |
| SQLAlchemy's philosophy: | |
| * SQL databases behave less and less like object | |
| collections the more size and performance start to | |
| matter; object collections behave less and less like | |
| tables and rows the more abstraction starts to matter. | |
| SQLAlchemy aims to accommodate both of these | |
| principles. | |
| * An ORM doesn't need to hide the "R". A relational | |
| database provides rich, set-based functionality | |
| that should be fully exposed. SQLAlchemy's | |
| ORM provides an open-ended set of patterns | |
| that allow a developer to construct a custom | |
| mediation layer between a domain model and | |
| a relational schema, turning the so-called | |
| "object relational impedance" issue into | |
| a distant memory. | |
| * The developer, in all cases, makes all decisions | |
| regarding the design, structure, and naming conventions | |
| of both the object model as well as the relational | |
| schema. SQLAlchemy only provides the means | |
| to automate the execution of these decisions. | |
| * With SQLAlchemy, there's no such thing as | |
| "the ORM generated a bad query" - you | |
| retain full control over the structure of | |
| queries, including how joins are organized, | |
| how subqueries and correlation is used, what | |
| columns are requested. Everything SQLAlchemy | |
| does is ultimately the result of a developer-initiated | |
| decision. | |
| * Don't use an ORM if the problem doesn't need one. | |
| SQLAlchemy consists of a Core and separate ORM | |
| component. The Core offers a full SQL expression | |
| language that allows Pythonic construction | |
| of SQL constructs that render directly to SQL | |
| strings for a target database, returning | |
| result sets that are essentially enhanced DBAPI | |
| cursors. | |
| * Transactions should be the norm. With SQLAlchemy's | |
| ORM, nothing goes to permanent storage until | |
| commit() is called. SQLAlchemy encourages applications | |
| to create a consistent means of delineating | |
| the start and end of a series of operations. | |
| * Never render a literal value in a SQL statement. | |
| Bound parameters are used to the greatest degree | |
| possible, allowing query optimizers to cache | |
| query plans effectively and making SQL injection | |
| attacks a non-issue. | |
| Documentation | |
| ------------- | |
| Latest documentation is at: | |
| https://www.sqlalchemy.org/docs/ | |
| Installation / Requirements | |
| --------------------------- | |
| Full documentation for installation is at | |
| `Installation <https://www.sqlalchemy.org/docs/intro.html#installation>`_. | |
| Getting Help / Development / Bug reporting | |
| ------------------------------------------ | |
| Please refer to the `SQLAlchemy Community Guide <https://www.sqlalchemy.org/support.html>`_. | |
| Code of Conduct | |
| --------------- | |
| Above all, SQLAlchemy places great emphasis on polite, thoughtful, and | |
| constructive communication between users and developers. | |
| Please see our current Code of Conduct at | |
| `Code of Conduct <https://www.sqlalchemy.org/codeofconduct.html>`_. | |
| License | |
| ------- | |
| SQLAlchemy is distributed under the `MIT license | |
| <https://www.opensource.org/licenses/mit-license.php>`_. | |