Spaces:
Runtime error
Runtime error
Metadata-Version: 2.1 | |
Name: SQLAlchemy | |
Version: 2.0.17 | |
Summary: Database Abstraction Library | |
Home-page: https://www.sqlalchemy.org | |
Author: Mike Bayer | |
Author-email: [email protected] | |
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 :: 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.2.0) | |
Requires-Dist: greenlet (!=0.4.17) ; 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 ; extra == 'aiomysql' | |
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.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 (>=7) ; 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://img.shields.io/pypi/dm/sqlalchemy | |
:target: https://pypi.org/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>`_. | |