You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
9.2KB

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