Files
langflow/configuration-custom-database.html
github-merge-queue[bot] 4c88b8dcda deploy: 9e0e66001d
2025-09-03 20:37:00 +00:00

149 lines
43 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-Configuration/configuration-custom-database" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.8.1">
<title data-rh="true">Configure an external PostgreSQL database | Langflow Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://docs.langflow.org/configuration-custom-database"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Configure an external PostgreSQL database | Langflow Documentation"><meta data-rh="true" name="description" content="Langflow&#x27;s default database is SQLite, but you can configure Langflow to use PostgreSQL instead."><meta data-rh="true" property="og:description" content="Langflow&#x27;s default database is SQLite, but you can configure Langflow to use PostgreSQL instead."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://docs.langflow.org/configuration-custom-database"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/configuration-custom-database" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.langflow.org/configuration-custom-database" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://UZK6BDPCVY-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Configure an external PostgreSQL database","item":"https://docs.langflow.org/configuration-custom-database"}]}</script><link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SLQFLQ3KPT"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-SLQFLQ3KPT",{})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Langflow Documentation" href="/opensearch.xml">
<script>!function(){var e="analytics",t=window[e]=window[e]||[];if(!t.initialize)if(t.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{t.invoked=!0,t.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"],t.factory=function(n){return function(){if(window[e].initialized)return window[e][n].apply(window[e],arguments);var r=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(n)>-1){var i=document.querySelector("link[rel='canonical']");r.push({__t:"bpc",c:i&&i.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}return r.unshift(n),t.push(r),t}};for(var n=0;n<t.methods.length;n++){var r=t.methods[n];t[r]=t.factory(r)}t.load=function(n,r){var i=document.createElement("script");i.type="text/javascript",i.async=!0,i.setAttribute("data-global-segment-analytics-key",e),i.src="https://cdn.segment.com/analytics.js/v1/"+n+"/analytics.min.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(i,a),t._loadOptions=r},t._writeKey="60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG",t.SNIPPET_VERSION="5.2.0",t.load("60AfGDrVxy8nAGJngo3fCYWG4LvhMAlG"),t.page()}}()</script>
<script>window.__SCROLL_TRACKING_CONFIG__={selectors:[{selector:"h1, h2, h3, h4, h5, h6",eventName:"Docs.langflow.org - Heading Viewed",properties:{element_type:"heading"}},{selector:".ch-codeblock",eventName:"Docs.langflow.org - Codeblock Viewed",properties:{element_type:"code",language:"helper:codeLanguage"}}]}</script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Sora:wght@550;600&amp;display=swap">
<script>!function(){window.semaphore=window.semaphore||[],window.ketch=function(){window.semaphore.push(arguments)};var e=document.createElement("script");e.type="text/javascript",e.src="https://global.ketchcdn.com/web/v3/config/datastax/langflow_org_web/boot.js",e.defer=e.async=!0,document.getElementsByTagName("head")[0].appendChild(e)}()</script>
<script defer="true">!function(){const e=e=>{if(window.gtag&&e.purposes&&"analytics"in e.purposes&&"targeted_advertising"in e.purposes){const n=!0===e.purposes.analytics?"granted":"denied",t=!0===e.purposes.targeted_advertising?"granted":"denied",a={analytics_storage:n,ad_personalization:t,ad_storage:t,ad_user_data:t};window.gtag("consent","update",a)}};window.ketch&&window.ketch("on","consent",e)}()</script><link rel="stylesheet" href="/assets/css/styles.9488e50d.css">
<script src="/assets/js/runtime~main.57fbaa8d.js" defer="defer"></script>
<script src="/assets/js/main.14a877c9.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://github.com/langflow-ai/langflow" target="_blank" class="navbar__item navbar__link header-github-link" data-event="Docs.langflow.org - Social Clicked" data-platform="github"></a><a href="https://twitter.com/langflow_ai" target="_blank" class="navbar__item navbar__link header-twitter-link" data-event="Docs.langflow.org - Social Clicked" data-platform="x"></a><a href="https://discord.gg/EqksyE2EX9" target="_blank" class="navbar__item navbar__link header-discord-link" data-event="Docs.langflow.org - Social Clicked" data-platform="discord"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/"><img src="/img/lf-docs-light.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/lf-docs-dark.svg" alt="Langflow" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/">Welcome to Langflow</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/about-langflow">Get started</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-overview">Flows</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/agents">Agents</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/mcp-client">Model Context Protocol (MCP)</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" href="/api-keys-and-authentication">Develop</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/api-keys-and-authentication">API keys and authentication</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/install-custom-dependencies">Install custom dependencies</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/configuration-global-variables">Global variables</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/environment-variables">Environment variables</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role="button" aria-expanded="true" tabindex="0" href="/concepts-file-management">Storage and memory</a></div><ul class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-file-management">Manage files</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/memory">Manage memory</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/session-id">Use Session IDs</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/configuration-custom-database">Configure an external PostgreSQL database</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/enterprise-database-guide">Database guide for enterprise administrators</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" tabindex="0" href="/logging">Observability</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/data-types">Use Langflow data types</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/concepts-voice-mode">Use voice mode</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/configuration-cli">Use the Langflow CLI</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/deployment-overview">Deploy</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/concepts-components">Components reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/api-reference-api-examples">API reference</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/contributing-community">Contribute</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/release-notes">Release notes</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" role="button" aria-expanded="false" href="/troubleshoot">Support</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 sidebar-ad">
<a href="https://www.langflow.org/desktop" target="_blank" class="menu__link">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1645_37)">
<path d="M12 17H20C21.1046 17 22 16.1046 22 15V13M12 17H4C2.89543 17 2 16.1046 2 15V5C2 3.89543 2.89543 3 4 3H10M12 17V21M8 21H12M12 21H16M11.75 10.2917H13.2083L16.125 7.375H17.5833L20.5 4.45833H21.9583M16.125 11.75H17.5833L20.5 8.83333H21.9583M11.75 5.91667H13.2083L16.125 3H17.5833" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<defs>
<clipPath id="clip0_1645_37">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>
<div class="sidebar-ad-text-container">
<span class="sidebar-ad-text">Get started in minutes</span>
<span class="sidebar-ad-text sidebar-ad-text-gradient">Download Langflow Desktop</span>
</div>
</a>
</li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Develop</span></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Storage and memory</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Configure an external PostgreSQL database</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Configure an external PostgreSQL database</h1></header><style>[data-ch-theme="github-dark"] { --ch-t-colorScheme: dark;--ch-t-foreground: #c9d1d9;--ch-t-background: #0d1117;--ch-t-lighter-inlineBackground: #0d1117e6;--ch-t-editor-background: #0d1117;--ch-t-editor-foreground: #c9d1d9;--ch-t-editor-lineHighlightBackground: #6e76811a;--ch-t-editor-rangeHighlightBackground: #ffffff0b;--ch-t-editor-infoForeground: #3794FF;--ch-t-editor-selectionBackground: #264F78;--ch-t-focusBorder: #1f6feb;--ch-t-tab-activeBackground: #0d1117;--ch-t-tab-activeForeground: #c9d1d9;--ch-t-tab-inactiveBackground: #010409;--ch-t-tab-inactiveForeground: #8b949e;--ch-t-tab-border: #30363d;--ch-t-tab-activeBorder: #0d1117;--ch-t-editorGroup-border: #30363d;--ch-t-editorGroupHeader-tabsBackground: #010409;--ch-t-editorLineNumber-foreground: #6e7681;--ch-t-input-background: #0d1117;--ch-t-input-foreground: #c9d1d9;--ch-t-input-border: #30363d;--ch-t-icon-foreground: #8b949e;--ch-t-sideBar-background: #010409;--ch-t-sideBar-foreground: #c9d1d9;--ch-t-sideBar-border: #30363d;--ch-t-list-activeSelectionBackground: #6e768166;--ch-t-list-activeSelectionForeground: #c9d1d9;--ch-t-list-hoverBackground: #6e76811a;--ch-t-list-hoverForeground: #c9d1d9; }</style>
<p>Langflow&#x27;s default database is <a href="https://www.sqlite.org/docs.html" target="_blank" rel="noopener noreferrer">SQLite</a>, but you can configure Langflow to use PostgreSQL instead.</p>
<p>This guide walks you through setting up an external database for Langflow by replacing the default SQLite connection string <code>sqlite:///./langflow.db</code> with PostgreSQL, both in local and containerized environments.</p>
<p>In this configuration, all structured application data from Langflow, including flows, message history, and logs, is instead managed by PostgreSQL.
PostgreSQL is better suited for production environments due to its robust support for concurrent users, advanced data integrity features, and scalability.
Langflow can more efficiently handle multiple users and larger workloads by using PostgreSQL as the database.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
<ul>
<li>A <a href="https://www.pgadmin.org/download/" target="_blank" rel="noopener noreferrer">PostgreSQL</a> database</li>
</ul>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="connect-langflow-to-a-local-postgresql-database">Connect Langflow to a local PostgreSQL database<a href="#connect-langflow-to-a-local-postgresql-database" class="hash-link" aria-label="Direct link to Connect Langflow to a local PostgreSQL database" title="Direct link to Connect Langflow to a local PostgreSQL database"></a></h2>
<ol>
<li>
<p>If Langflow is running, stop Langflow with <kbd>Ctrl+C</kbd>.</p>
</li>
<li>
<p>Find your PostgreSQL database&#x27;s connection string in the format <code>postgresql://user:password@host:port/dbname</code>.</p>
<p>The hostname in your connection string depends on how you&#x27;re running PostgreSQL:</p>
<ul>
<li>If you&#x27;re running PostgreSQL directly on your machine, use <code>localhost</code>.</li>
<li>If you&#x27;re running PostgreSQL in Docker Compose, use the service name, such as <code>postgres</code>.</li>
<li>If you&#x27;re running PostgreSQL in a separate Docker container with <code>docker run</code>, use the container&#x27;s IP address or network alias.</li>
<li>If you&#x27;re running a cloud-hosted PostgreSQL, your provider will share your connection string, which includes a username and password.</li>
</ul>
</li>
<li>
<p>Create a Langflow <code>.env</code> file:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>touch .env</span></div></div><br></code></div></div>
<p>You can use the <a href="https://github.com/langflow-ai/langflow/blob/main/.env.example" target="_blank" rel="noopener noreferrer"><code>.env.example</code></a> file in the Langflow repository as a template for your own <code>.env</code> file.</p>
</li>
<li>
<p>In your <code>.env</code> file, set <code>LANGFLOW_DATABASE_URL</code> to your PostgreSQL connection string:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_DATABASE_URL=&quot;postgresql://user:password@localhost:5432/dbname&quot;</span></div></div><br></code></div></div>
</li>
<li>
<p>Save your changes, and then start Langflow with your <code>.env</code> file:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>uv run langflow run --env-file .env</span></div></div><br></code></div></div>
</li>
<li>
<p>In Langflow, run any flow to create traffic.</p>
</li>
<li>
<p>Inspect your PostgreSQL database&#x27;s tables and activity to verify that new tables and traffic were created after you ran a flow.</p>
</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="deploy-langflow-and-postgresql-containers-with-docker-composeyml">Deploy Langflow and PostgreSQL containers with docker-compose.yml<a href="#deploy-langflow-and-postgresql-containers-with-docker-composeyml" class="hash-link" aria-label="Direct link to Deploy Langflow and PostgreSQL containers with docker-compose.yml" title="Direct link to Deploy Langflow and PostgreSQL containers with docker-compose.yml"></a></h2>
<p>Launching Langflow and PostgreSQL containers in the same Docker network ensures proper connectivity between services.
For an example, see the <a href="https://github.com/langflow-ai/langflow/blob/main/docker_example/docker-compose.yml" target="_blank" rel="noopener noreferrer"><code>docker-compose.yml</code></a> file in the Langflow repository.</p>
<p>The configuration in the example <code>docker-compose.yml</code> also sets up persistent volumes for both Langflow and PostgreSQL data.
Persistent volumes map directories inside of containers to storage on the host machine, so data persists through container restarts.</p>
<p>Docker Compose creates an isolated network for all services defined in <code>docker-compose.yml</code>. This ensures that the services can communicate with each other using their service names as hostnames, such as <code>postgres</code> in the database URL.
In contrast, if you run PostgreSQL separately with <code>docker run</code>, it launches in a different network than the Langflow container, and this prevents Langflow from connecting to PostgreSQL using the service name.</p>
<p>To start the Langflow and PostgreSQL services with the example Docker Compose file, navigate to the <code>langflow/docker_example</code> directory, and then run <code>docker-compose up</code>.
If you&#x27;re using a different <code>docker-compose.yml</code> file, run the <code>docker-compose up</code> command from the same directory as your <code>docker-compose.yml</code> file.</p>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="deploy-multiple-langflow-instances-with-a-shared-postgresql-database">Deploy multiple Langflow instances with a shared PostgreSQL database<a href="#deploy-multiple-langflow-instances-with-a-shared-postgresql-database" class="hash-link" aria-label="Direct link to Deploy multiple Langflow instances with a shared PostgreSQL database" title="Direct link to Deploy multiple Langflow instances with a shared PostgreSQL database"></a></h2>
<p>To configure multiple Langflow instances that share the same PostgreSQL database, modify your <code>docker-compose.yml</code> file to include multiple Langflow services.</p>
<p>This example populates the values in <code>docker-compose.yml</code> with values from your Langflow <code>.env</code> file.
This approach means you only have to manage deployment variables in one file, instead of copying values across multiple files.</p>
<ol>
<li>
<p>Update your <code>.env</code> file with values for your PostgreSQL database:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>POSTGRES_USER=langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>POSTGRES_PASSWORD=your_secure_password</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>POSTGRES_DB=langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>POSTGRES_HOST=postgres</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>POSTGRES_PORT=5432</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_CONFIG_DIR=app/langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_PORT_1=7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_PORT_2=7861</span></div></div><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>LANGFLOW_HOST=0.0.0.0</span></div></div><br></code></div></div>
</li>
<li>
<p>Reference these variables in your <code>docker-compose.yml</code>.
For example:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span>services:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> postgres:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> image: postgres:16</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> environment:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_USER=${POSTGRES_USER}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - POSTGRES_DB=${POSTGRES_DB}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - &quot;${POSTGRES_PORT}:5432&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - langflow-postgres:/var/lib/postgresql/data</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> langflow-1:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> image: langflowai/langflow:latest</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> pull_policy: always</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - &quot;${LANGFLOW_PORT_1}:7860&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> depends_on:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - postgres</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> environment:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_HOST=${LANGFLOW_HOST}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - PORT=7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - langflow-data-1:/app/langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> langflow-2:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> image: langflowai/langflow:latest</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> pull_policy: always</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> ports:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - &quot;${LANGFLOW_PORT_2}:7860&quot;</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> depends_on:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - postgres</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> environment:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_CONFIG_DIR=${LANGFLOW_CONFIG_DIR}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - LANGFLOW_HOST=${LANGFLOW_HOST}</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - PORT=7860</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> - langflow-data-2:/app/langflow</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span></span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span>volumes:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> langflow-postgres:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> langflow-data-1:</span></div></div><div><span class="ch-code-line-number">_<!-- -->46</span><div style="display:inline-block;margin-left:16px"><span> langflow-data-2:</span></div></div><br></code></div></div>
</li>
<li>
<p>Deploy the file with <code>docker-compose up</code>.
You can access the first Langflow instance at <code>http://localhost:7860</code>, and the second Langflow instance at <code>http://localhost:7861</code>.</p>
</li>
<li>
<p>To confirm both instances are using the same database, run the <code>docker exec</code> command to start <code>psql</code> in your PostgreSQL container.
Your container name may vary.</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>docker exec -it docker-test-postgres-1 psql -U langflow -d langflow</span></div></div><br></code></div></div>
</li>
<li>
<p>Query the database for active connections:</p>
<div class="ch-codeblock not-prose" data-ch-theme="github-dark"><div class="ch-code-wrapper ch-code" data-ch-measured="false"><code class="ch-code-scroll-parent"><br><div><span class="ch-code-line-number">_<!-- -->10</span><div style="display:inline-block;margin-left:16px"><span>langflow=# SELECT * FROM pg_stat_activity WHERE datname = &#x27;langflow&#x27;;</span></div></div><br></code></div></div>
</li>
<li>
<p>Examine the query results for multiple connections with different <code>client_addr</code> values, for example <code>172.21.0.3</code> and <code>172.21.0.4</code>.
Since each Langflow instance runs in its own container on the Docker network, using different incoming IP addresses confirms that both instances are actively connected to the PostgreSQL database.</p>
</li>
<li>
<p>To quit psql, type <code>quit</code>.</p>
</li>
</ol>
<h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="see-also">See also<a href="#see-also" class="hash-link" aria-label="Direct link to See also" title="Direct link to See also"></a></h2>
<ul>
<li><a href="/enterprise-database-guide">Langflow database guide for enterprise DBAs</a></li>
<li><a href="/memory">Memory management options</a></li>
<li><a href="/logging">Logs</a></li>
</ul></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/session-id"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Use Session IDs</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/enterprise-database-guide"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Database guide for enterprise administrators</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#prerequisites" class="table-of-contents__link toc-highlight">Prerequisites</a></li><li><a href="#connect-langflow-to-a-local-postgresql-database" class="table-of-contents__link toc-highlight">Connect Langflow to a local PostgreSQL database</a></li><li><a href="#deploy-langflow-and-postgresql-containers-with-docker-composeyml" class="table-of-contents__link toc-highlight">Deploy Langflow and PostgreSQL containers with docker-compose.yml</a></li><li><a href="#deploy-multiple-langflow-instances-with-a-shared-postgresql-database" class="table-of-contents__link toc-highlight">Deploy multiple Langflow instances with a shared PostgreSQL database</a></li><li><a href="#see-also" class="table-of-contents__link toc-highlight">See also</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title"></div><ul class="footer__items clean-list"><li class="footer__item"><div class="footer-links">
<span>© 2025 Langflow</span>
<span id="preferenceCenterContainer"> ·&nbsp; <a href="https://langflow.org/preferences">Manage Privacy Choices</a></span>
</div></li></ul></div></div></div></footer><div style="position:fixed;right:21px;bottom:21px;z-index:100;display:flex;align-items:center;gap:10px;cursor:pointer"><div style="background-color:#f6f6f6;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,0.1)"><img src="/img/langflow-icon-black-transparent.svg" style="width:40px" alt="Search"></div></div></div>
</body>
</html>