(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{cv4b:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return c})),n.d(t,"default",(function(){return b}));var o=n("wx14"),r=n("zLVn"),a=(n("q1tI"),n("7ljp")),i=n("hhGP"),c=(n("qKvR"),{});void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!c.hasOwnProperty("__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/Connecting to Databases/dremio.mdx"}});var s={_frontmatter:c},m=i.a;function b(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(a.b)(m,Object(o.a)({},s,n,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"dremio"},"Dremio"),Object(a.b)("p",null,"The recommended connector library for Dremio is\n",Object(a.b)("a",{href:"https://github.com/sqggles/sqlalchemy_dremio",parentName:"p"},"sqlalchemy_dremio"),"."),Object(a.b)("p",null,"The expected connection string is formatted as follows:"),Object(a.b)("pre",null,Object(a.b)("code",{parentName:"pre"},"dremio://{username}:{password}@{host}:{port}/dremio\n")),Object(a.b)("p",null,"This ",Object(a.b)("a",{href:"https://www.dremio.com/tutorials/dremio-apache-superset/",parentName:"p"},"blog post by Dremio")," has some\nadditional helpful instructions on connecting Superset to Dremio."))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/Connecting to Databases/dremio.mdx"}}),b.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-connecting-to-databases-dremio-mdx-05ae89134f1ae24fe9ff.js.map