codekingpro/portable-devtools
114k
1Metadata-Version: 2.4
2Name: SQLAlchemy
3Version: 2.0.49
4Summary: Database Abstraction Library
5Home-page: https://www.sqlalchemy.org
6Author: Mike Bayer
7Author-email: mike_mp@zzzcomputing.com
8License: MIT
9Project-URL: Documentation, https://docs.sqlalchemy.org
10Project-URL: Issue Tracker, https://github.com/sqlalchemy/sqlalchemy/
11Classifier: Development Status :: 5 - Production/Stable
12Classifier: Intended Audience :: Developers
13Classifier: Operating System :: OS Independent
14Classifier: Programming Language :: Python
15Classifier: Programming Language :: Python :: 3
16Classifier: Programming Language :: Python :: 3.7
17Classifier: Programming Language :: Python :: 3.8
18Classifier: Programming Language :: Python :: 3.9
19Classifier: Programming Language :: Python :: 3.10
20Classifier: Programming Language :: Python :: 3.11
21Classifier: Programming Language :: Python :: 3.12
22Classifier: Programming Language :: Python :: 3.13
23Classifier: Programming Language :: Python :: Implementation :: CPython
24Classifier: Programming Language :: Python :: Implementation :: PyPy
25Classifier: Topic :: Database :: Front-Ends
26Requires-Python: >=3.7
27Description-Content-Type: text/x-rst
28License-File: LICENSE
29Requires-Dist: importlib-metadata; python_version < "3.8"
30Requires-Dist: greenlet>=1; 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")))))
31Requires-Dist: typing-extensions>=4.6.0
32Provides-Extra: asyncio
33Requires-Dist: greenlet>=1; extra == "asyncio"
34Provides-Extra: mypy
35Requires-Dist: mypy>=0.910; extra == "mypy"
36Provides-Extra: mssql
37Requires-Dist: pyodbc; extra == "mssql"
38Provides-Extra: mssql-pymssql
39Requires-Dist: pymssql; extra == "mssql-pymssql"
40Provides-Extra: mssql-pyodbc
41Requires-Dist: pyodbc; extra == "mssql-pyodbc"
42Provides-Extra: mysql
43Requires-Dist: mysqlclient>=1.4.0; extra == "mysql"
44Provides-Extra: mysql-connector
45Requires-Dist: mysql-connector-python; extra == "mysql-connector"
46Provides-Extra: mariadb-connector
47Requires-Dist: mariadb!=1.1.10,!=1.1.2,!=1.1.5,>=1.0.1; extra == "mariadb-connector"
48Provides-Extra: oracle
49Requires-Dist: cx_oracle>=8; extra == "oracle"
50Provides-Extra: oracle-oracledb
51Requires-Dist: oracledb>=1.0.1; extra == "oracle-oracledb"
52Provides-Extra: postgresql
53Requires-Dist: psycopg2>=2.7; extra == "postgresql"
54Provides-Extra: postgresql-pg8000
55Requires-Dist: pg8000>=1.29.1; extra == "postgresql-pg8000"
56Provides-Extra: postgresql-asyncpg
57Requires-Dist: greenlet>=1; extra == "postgresql-asyncpg"
58Requires-Dist: asyncpg; extra == "postgresql-asyncpg"
59Provides-Extra: postgresql-psycopg2binary
60Requires-Dist: psycopg2-binary; extra == "postgresql-psycopg2binary"
61Provides-Extra: postgresql-psycopg2cffi
62Requires-Dist: psycopg2cffi; extra == "postgresql-psycopg2cffi"
63Provides-Extra: postgresql-psycopg
64Requires-Dist: psycopg>=3.0.7; extra == "postgresql-psycopg"
65Provides-Extra: postgresql-psycopgbinary
66Requires-Dist: psycopg[binary]>=3.0.7; extra == "postgresql-psycopgbinary"
67Provides-Extra: pymysql
68Requires-Dist: pymysql; extra == "pymysql"
69Provides-Extra: aiomysql
70Requires-Dist: greenlet>=1; extra == "aiomysql"
71Requires-Dist: aiomysql>=0.2.0; extra == "aiomysql"
72Provides-Extra: aioodbc
73Requires-Dist: greenlet>=1; extra == "aioodbc"
74Requires-Dist: aioodbc; extra == "aioodbc"
75Provides-Extra: asyncmy
76Requires-Dist: greenlet>=1; extra == "asyncmy"
77Requires-Dist: asyncmy!=0.2.4,!=0.2.6,>=0.2.3; extra == "asyncmy"
78Provides-Extra: aiosqlite
79Requires-Dist: greenlet>=1; extra == "aiosqlite"
80Requires-Dist: aiosqlite; extra == "aiosqlite"
81Requires-Dist: typing_extensions!=3.10.0.1; extra == "aiosqlite"
82Provides-Extra: sqlcipher
83Requires-Dist: sqlcipher3_binary; extra == "sqlcipher"
84Dynamic: license-file
85
86SQLAlchemy
87==========
88
89|PyPI| |Python| |Downloads|
90
91.. |PyPI| image:: https://img.shields.io/pypi/v/sqlalchemy
92 :target: https://pypi.org/project/sqlalchemy
93 :alt: PyPI
94
95.. |Python| image:: https://img.shields.io/pypi/pyversions/sqlalchemy
96 :target: https://pypi.org/project/sqlalchemy
97 :alt: PyPI - Python Version
98
99.. |Downloads| image:: https://static.pepy.tech/badge/sqlalchemy/month
100 :target: https://pepy.tech/project/sqlalchemy
101 :alt: PyPI - Downloads
102
103
104The Python SQL Toolkit and Object Relational Mapper
105
106Introduction
107-------------
108
109SQLAlchemy is the Python SQL toolkit and Object Relational Mapper
110that gives application developers the full power and
111flexibility of SQL. SQLAlchemy provides a full suite
112of well known enterprise-level persistence patterns,
113designed for efficient and high-performing database
114access, adapted into a simple and Pythonic domain
115language.
116
117Major SQLAlchemy features include:
118
119* An industrial strength ORM, built
120 from the core on the identity map, unit of work,
121 and data mapper patterns. These patterns
122 allow transparent persistence of objects
123 using a declarative configuration system.
124 Domain models
125 can be constructed and manipulated naturally,
126 and changes are synchronized with the
127 current transaction automatically.
128* A relationally-oriented query system, exposing
129 the full range of SQL's capabilities
130 explicitly, including joins, subqueries,
131 correlation, and most everything else,
132 in terms of the object model.
133 Writing queries with the ORM uses the same
134 techniques of relational composition you use
135 when writing SQL. While you can drop into
136 literal SQL at any time, it's virtually never
137 needed.
138* A comprehensive and flexible system
139 of eager loading for related collections and objects.
140 Collections are cached within a session,
141 and can be loaded on individual access, all
142 at once using joins, or by query per collection
143 across the full result set.
144* A Core SQL construction system and DBAPI
145 interaction layer. The SQLAlchemy Core is
146 separate from the ORM and is a full database
147 abstraction layer in its own right, and includes
148 an extensible Python-based SQL expression
149 language, schema metadata, connection pooling,
150 type coercion, and custom types.
151* All primary and foreign key constraints are
152 assumed to be composite and natural. Surrogate
153 integer primary keys are of course still the
154 norm, but SQLAlchemy never assumes or hardcodes
155 to this model.
156* Database introspection and generation. Database
157 schemas can be "reflected" in one step into
158 Python structures representing database metadata;
159 those same structures can then generate
160 CREATE statements right back out - all within
161 the Core, independent of the ORM.
162
163SQLAlchemy's philosophy:
164
165* SQL databases behave less and less like object
166 collections the more size and performance start to
167 matter; object collections behave less and less like
168 tables and rows the more abstraction starts to matter.
169 SQLAlchemy aims to accommodate both of these
170 principles.
171* An ORM doesn't need to hide the "R". A relational
172 database provides rich, set-based functionality
173 that should be fully exposed. SQLAlchemy's
174 ORM provides an open-ended set of patterns
175 that allow a developer to construct a custom
176 mediation layer between a domain model and
177 a relational schema, turning the so-called
178 "object relational impedance" issue into
179 a distant memory.
180* The developer, in all cases, makes all decisions
181 regarding the design, structure, and naming conventions
182 of both the object model as well as the relational
183 schema. SQLAlchemy only provides the means
184 to automate the execution of these decisions.
185* With SQLAlchemy, there's no such thing as
186 "the ORM generated a bad query" - you
187 retain full control over the structure of
188 queries, including how joins are organized,
189 how subqueries and correlation is used, what
190 columns are requested. Everything SQLAlchemy
191 does is ultimately the result of a developer-initiated
192 decision.
193* Don't use an ORM if the problem doesn't need one.
194 SQLAlchemy consists of a Core and separate ORM
195 component. The Core offers a full SQL expression
196 language that allows Pythonic construction
197 of SQL constructs that render directly to SQL
198 strings for a target database, returning
199 result sets that are essentially enhanced DBAPI
200 cursors.
201* Transactions should be the norm. With SQLAlchemy's
202 ORM, nothing goes to permanent storage until
203 commit() is called. SQLAlchemy encourages applications
204 to create a consistent means of delineating
205 the start and end of a series of operations.
206* Never render a literal value in a SQL statement.
207 Bound parameters are used to the greatest degree
208 possible, allowing query optimizers to cache
209 query plans effectively and making SQL injection
210 attacks a non-issue.
211
212Documentation
213-------------
214
215Latest documentation is at:
216
217https://www.sqlalchemy.org/docs/
218
219Installation / Requirements
220---------------------------
221
222Full documentation for installation is at
223`Installation <https://www.sqlalchemy.org/docs/intro.html#installation>`_.
224
225Getting Help / Development / Bug reporting
226------------------------------------------
227
228Please refer to the `SQLAlchemy Community Guide <https://www.sqlalchemy.org/support.html>`_.
229
230Code of Conduct
231---------------
232
233Above all, SQLAlchemy places great emphasis on polite, thoughtful, and
234constructive communication between users and developers.
235Please see our current Code of Conduct at
236`Code of Conduct <https://www.sqlalchemy.org/codeofconduct.html>`_.
237
238License
239-------
240
241SQLAlchemy is distributed under the `MIT license
242<https://www.opensource.org/licenses/mit-license.php>`_.
243
244 