{"id":135334,"date":"2024-09-06T10:30:48","date_gmt":"2024-09-06T05:00:48","guid":{"rendered":"https:\/\/www.vskills.in\/certification\/tutorial\/?page_id=135334"},"modified":"2024-09-06T10:34:14","modified_gmt":"2024-09-06T05:04:14","slug":"database-connections-using-lifespan-events-in-fastapi","status":"publish","type":"page","link":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/","title":{"rendered":"Database Connections Using Lifespan Events in FastAPI"},"content":{"rendered":"\n<p>In FastAPI, lifespan events provide a mechanism to execute code before or after the application starts or stops. This is particularly useful for managing database connections, ensuring that they are established before the application starts serving requests and closed after the application shuts down.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Creating Lifespan Events<\/strong><\/h2>\n\n\n\n<p><strong>Import Necessary Modules:<\/strong><\/p>\n\n\n\n<p>Python<\/p>\n\n\n\n<p>from fastapi import FastAPI, Lifespan<br>from sqlalchemy.ext.asyncio import create_async_engine<br>from sqlalchemy.orm import sessionmaker<\/p>\n\n\n\n<p><strong>Define a Lifespan Function:<\/strong><\/p>\n\n\n\n<p>Python<\/p>\n\n\n\n<p>async def startup() -&gt; None:<br>engine = create_async_engine(DATABASE_URL)<br>async_session = sessionmaker(autocommit=False, autoflush=False, bind=engine)<br>app.state.db = async_session<\/p>\n\n\n\n<p>async def shutdown() -&gt; None:<br>await app.state.db.close()<\/p>\n\n\n\n<p>The <code class=\"\">startup<\/code> function creates the database engine and session factory and stores them in the application&#8217;s state. The <code class=\"\">shutdown<\/code> function closes the database session when the application is shutting down.<\/p>\n\n\n\n<p><strong>Create a FastAPI Instance:<\/strong><\/p>\n\n\n\n<p>Python<\/p>\n\n\n\n<p>app = FastAPI(lifespan=Lifespan(startup=startup, shutdown=shutdown))<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Using the Database Connection<\/strong><\/h2>\n\n\n\n<p>You can now access the database session from your endpoints:<\/p>\n\n\n\n<p>Python<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from fastapi import APIRouter, Depends\n\nrouter = APIRouter()\n\n@router.post(\"\/users\")\nasync def create_user(user: User, db: Session = Depends(lambda: app.state.db)):\n    async with db:\n        db.add(user)\n        await db.commit()\n        await db.refresh(user)\n        return user\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Benefits of Using Lifespan Events<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database connections are managed in a single place, making your code more organized and easier to maintain.<\/li>\n\n\n\n<li>Lifespan events ensure that database connections are closed properly when the application shuts down, preventing resource leaks.<\/li>\n\n\n\n<li>Using the <code class=\"\">Depends<\/code> decorator, you can inject the database session into your endpoints, making your code more modular and testable.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In FastAPI, lifespan events provide a mechanism to execute code before or after the application starts or stops. This is particularly useful for managing database connections, ensuring that they are established before the application starts serving requests and closed after the application shuts down. Creating Lifespan Events Import Necessary Modules: Python from fastapi import FastAPI,&#8230;<\/p>\n","protected":false},"author":16,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-135334","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Database Connections Using Lifespan Events in FastAPI - Tutorial<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Database Connections Using Lifespan Events in FastAPI - Tutorial\" \/>\n<meta property=\"og:description\" content=\"In FastAPI, lifespan events provide a mechanism to execute code before or after the application starts or stops. This is particularly useful for managing database connections, ensuring that they are established before the application starts serving requests and closed after the application shuts down. Creating Lifespan Events Import Necessary Modules: Python from fastapi import FastAPI,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/\" \/>\n<meta property=\"og:site_name\" content=\"Tutorial\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/vskills.in\/\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-06T05:04:14+00:00\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/\",\"name\":\"Database Connections Using Lifespan Events in FastAPI - Tutorial\",\"isPartOf\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\"},\"datePublished\":\"2024-09-06T05:00:48+00:00\",\"dateModified\":\"2024-09-06T05:04:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Database Connections Using Lifespan Events in FastAPI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#website\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"name\":\"Tutorial\",\"description\":\"Vskills - A initiative in elearning and certification\",\"publisher\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#organization\",\"name\":\"Vskills\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"contentUrl\":\"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg\",\"width\":73,\"height\":55,\"caption\":\"Vskills\"},\"image\":{\"@id\":\"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/vskills.in\/\",\"https:\/\/x.com\/vskills_in\",\"https:\/\/www.linkedin.com\/company-beta\/1371554\/\",\"https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Database Connections Using Lifespan Events in FastAPI - Tutorial","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/","og_locale":"en_US","og_type":"article","og_title":"Database Connections Using Lifespan Events in FastAPI - Tutorial","og_description":"In FastAPI, lifespan events provide a mechanism to execute code before or after the application starts or stops. This is particularly useful for managing database connections, ensuring that they are established before the application starts serving requests and closed after the application shuts down. Creating Lifespan Events Import Necessary Modules: Python from fastapi import FastAPI,...","og_url":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/","og_site_name":"Tutorial","article_publisher":"https:\/\/www.facebook.com\/vskills.in\/","article_modified_time":"2024-09-06T05:04:14+00:00","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/","name":"Database Connections Using Lifespan Events in FastAPI - Tutorial","isPartOf":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website"},"datePublished":"2024-09-06T05:00:48+00:00","dateModified":"2024-09-06T05:04:14+00:00","breadcrumb":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/database-connections-using-lifespan-events-in-fastapi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.vskills.in\/certification\/tutorial\/"},{"@type":"ListItem","position":2,"name":"Database Connections Using Lifespan Events in FastAPI"}]},{"@type":"WebSite","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#website","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","name":"Tutorial","description":"Vskills - A initiative in elearning and certification","publisher":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.vskills.in\/certification\/tutorial\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#organization","name":"Vskills","url":"https:\/\/www.vskills.in\/certification\/tutorial\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/","url":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","contentUrl":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-content\/uploads\/2017\/07\/vskills-min-logo.jpg","width":73,"height":55,"caption":"Vskills"},"image":{"@id":"https:\/\/www.vskills.in\/certification\/tutorial\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/vskills.in\/","https:\/\/x.com\/vskills_in","https:\/\/www.linkedin.com\/company-beta\/1371554\/","https:\/\/www.youtube.com\/channel\/UCMWnscxPwRF_PqXo9B7q_Tw"]}]}},"_links":{"self":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/135334","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/comments?post=135334"}],"version-history":[{"count":2,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/135334\/revisions"}],"predecessor-version":[{"id":135350,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/pages\/135334\/revisions\/135350"}],"wp:attachment":[{"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/media?parent=135334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/categories?post=135334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vskills.in\/certification\/tutorial\/wp-json\/wp\/v2\/tags?post=135334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}