fbpx
Wikipedia

SQLAlchemy

SQLAlchemy is an open-source SQL toolkit and object-relational mapper (ORM) for the Python programming language released under the MIT License.[5]

SQLAlchemy
Original author(s)Michael Bayer[1][2]
Initial releaseFebruary 14, 2006; 17 years ago (2006-02-14)[3]
Stable release
1.4.45 / December 10, 2022; 2 months ago (2022-12-10)[4]
Repository
  • github.com/sqlalchemy/sqlalchemy
Written inPython
Operating systemCross-platform
TypeObject-relational mapping
LicenseMIT License[5]
Websitewww.sqlalchemy.org 
Mike Bayer talking about SQLAlchemy at PyCon 2012

Description

SQLAlchemy's philosophy is that relational databases behave less like object collections as the scale gets larger and performance starts being a concern, while object collections behave less like tables and rows as more abstraction is designed into them. For this reason it has adopted the data mapper pattern (similar to Hibernate for Java) rather than the active record pattern used by a number of other object-relational mappers.[6]

History

SQLAlchemy was first released in February 2006[3]

Example

The following example represents an n-to-1 relationship between movies and their directors. It is shown how user-defined Python classes create corresponding database tables, how instances with relationships are created from either side of the relationship, and finally how the data can be queried—illustrating automatically generated SQL queries for both lazy and eager loading.

Schema definition

Creating two Python classes and corresponding database tables in the DBMS:

from sqlalchemy import * from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relation, sessionmaker Base = declarative_base() class Movie(Base): __tablename__ = "movies" id = Column(Integer, primary_key=True) title = Column(String(255), nullable=False) year = Column(Integer) directed_by = Column(Integer, ForeignKey("directors.id")) director = relation("Director", backref="movies", lazy=False) def __init__(self, title=None, year=None): self.title = title self.year = year def __repr__(self): return "Movie(%r, %r, %r)" % (self.title, self.year, self.director) class Director(Base): __tablename__ = "directors" id = Column(Integer, primary_key=True) name = Column(String(50), nullable=False, unique=True) def __init__(self, name=None): self.name = name def __repr__(self): return "Director(%r)" % (self.name) engine = create_engine("dbms://user:pwd@host/dbname") Base.metadata.create_all(engine) 

Data insertion

One can insert a director-movie relationship via either entity:

Session = sessionmaker(bind=engine) session = Session() m1 = Movie("Robocop", 1987) m1.director = Director("Paul Verhoeven") d2 = Director("George Lucas") d2.movies = [Movie("Star Wars", 1977), Movie("THX 1138", 1971)] try: session.add(m1) session.add(d2) session.commit() except: session.rollback() 

Querying

alldata = session.query(Movie).all() for somedata in alldata: print(somedata) 

SQLAlchemy issues the following query to the DBMS (omitting aliases):

SELECT movies.id, movies.title, movies.year, movies.directed_by, directors.id, directors.name FROM movies LEFT OUTER JOIN directors ON directors.id = movies.directed_by 

The output:

Movie('Robocop', 1987L, Director('Paul Verhoeven')) Movie('Star Wars', 1977L, Director('George Lucas')) Movie('THX 1138', 1971L, Director('George Lucas')) 

Setting lazy=True (default) instead, SQLAlchemy would first issue a query to get the list of movies and only when needed (lazy) for each director a query to get the name of the corresponding director:

SELECT movies.id, movies.title, movies.year, movies.directed_by FROM movies SELECT directors.id, directors.name FROM directors WHERE directors.id = %s 

See also

References

  1. ^ Mike Bayer is the creator of SQLAlchemy and Mako Templates for Python.
  2. ^ Interview Mike Bayer SQLAlchemy #pydata #python
  3. ^ a b "Download - SQLAlchemy". SQLAlchemy. Retrieved 21 February 2015.
  4. ^ "Releases - sqlalchemy/sqlalchemy". Retrieved 11 December 2022 – via GitHub.
  5. ^ a b "zzzeek / sqlalchemy / source / LICENSE". BitBucket. Retrieved 21 February 2015.
  6. ^ in The architecture of open source applications
Notes
  • Gift, Noah (12 Aug 2008). "Using SQLAlchemy". Developerworks. IBM. Retrieved 8 Feb 2011.
  • Rick Copeland, Essential SQLAlchemy, O'Reilly, 2008, ISBN 0-596-51614-2

External links

  • Official website  
  • SQLAlchemy Tutorial

sqlalchemy, this, article, contains, content, that, written, like, advertisement, please, help, improve, removing, promotional, content, inappropriate, external, links, adding, encyclopedic, content, written, from, neutral, point, view, december, 2017, learn, . This article contains content that is written like an advertisement Please help improve it by removing promotional content and inappropriate external links and by adding encyclopedic content written from a neutral point of view December 2017 Learn how and when to remove this template message SQLAlchemy is an open source SQL toolkit and object relational mapper ORM for the Python programming language released under the MIT License 5 SQLAlchemyOriginal author s Michael Bayer 1 2 Initial releaseFebruary 14 2006 17 years ago 2006 02 14 3 Stable release1 4 45 December 10 2022 2 months ago 2022 12 10 4 Repositorygithub wbr com wbr sqlalchemy wbr sqlalchemyWritten inPythonOperating systemCross platformTypeObject relational mappingLicenseMIT License 5 Websitewww wbr sqlalchemy wbr org Mike Bayer talking about SQLAlchemy at PyCon 2012 Contents 1 Description 2 History 3 Example 3 1 Schema definition 3 2 Data insertion 3 3 Querying 4 See also 5 References 6 External linksDescription EditSQLAlchemy s philosophy is that relational databases behave less like object collections as the scale gets larger and performance starts being a concern while object collections behave less like tables and rows as more abstraction is designed into them For this reason it has adopted the data mapper pattern similar to Hibernate for Java rather than the active record pattern used by a number of other object relational mappers 6 History EditSQLAlchemy was first released in February 2006 3 Example EditThis section possibly contains original research Please improve it by verifying the claims made and adding inline citations Statements consisting only of original research should be removed November 2019 Learn how and when to remove this template message The following example represents an n to 1 relationship between movies and their directors It is shown how user defined Python classes create corresponding database tables how instances with relationships are created from either side of the relationship and finally how the data can be queried illustrating automatically generated SQL queries for both lazy and eager loading Schema definition Edit Creating two Python classes and corresponding database tables in the DBMS from sqlalchemy import from sqlalchemy ext declarative import declarative base from sqlalchemy orm import relation sessionmaker Base declarative base class Movie Base tablename movies id Column Integer primary key True title Column String 255 nullable False year Column Integer directed by Column Integer ForeignKey directors id director relation Director backref movies lazy False def init self title None year None self title title self year year def repr self return Movie r r r self title self year self director class Director Base tablename directors id Column Integer primary key True name Column String 50 nullable False unique True def init self name None self name name def repr self return Director r self name engine create engine dbms user pwd host dbname Base metadata create all engine Data insertion Edit One can insert a director movie relationship via either entity Session sessionmaker bind engine session Session m1 Movie Robocop 1987 m1 director Director Paul Verhoeven d2 Director George Lucas d2 movies Movie Star Wars 1977 Movie THX 1138 1971 try session add m1 session add d2 session commit except session rollback Querying Edit alldata session query Movie all for somedata in alldata print somedata SQLAlchemy issues the following query to the DBMS omitting aliases SELECT movies id movies title movies year movies directed by directors id directors name FROM movies LEFT OUTER JOIN directors ON directors id movies directed by The output Movie Robocop 1987 L Director Paul Verhoeven Movie Star Wars 1977 L Director George Lucas Movie THX 1138 1971 L Director George Lucas Setting lazy True default instead SQLAlchemy would first issue a query to get the list of movies and only when needed lazy for each director a query to get the name of the corresponding director SELECT movies id movies title movies year movies directed by FROM movies SELECT directors id directors name FROM directors WHERE directors id sSee also Edit Free and open source software portalSQLObject Storm Pylons TurboGears Cubes OLAP server References Edit Mike Bayer is the creator of SQLAlchemy and Mako Templates for Python Interview Mike Bayer SQLAlchemy pydata python a b Download SQLAlchemy SQLAlchemy Retrieved 21 February 2015 Releases sqlalchemy sqlalchemy Retrieved 11 December 2022 via GitHub a b zzzeek sqlalchemy source LICENSE BitBucket Retrieved 21 February 2015 in The architecture of open source applications NotesGift Noah 12 Aug 2008 Using SQLAlchemy Developerworks IBM Retrieved 8 Feb 2011 Rick Copeland Essential SQLAlchemy O Reilly 2008 ISBN 0 596 51614 2External links EditOfficial website SQLAlchemy Tutorial Retrieved from https en wikipedia org w index php title SQLAlchemy amp oldid 1126800223, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.