|
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>`_. |
|
|
|
|