(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{cv4b:function(e,t,o){"use strict";o.r(t),o.d(t,"_frontmatter",(function(){return c})),o.d(t,"default",(function(){return m}));var n=o("k1TG"),r=o("8o2o"),a=(o("q1tI"),o("7ljp")),i=o("hhGP"),c=(o("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=i.a;function m(e){var t=e.components,o=Object(r.a)(e,["components"]);return Object(a.b)(s,Object(n.a)({},o,{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!==m&&m&&m===Object(m)&&Object.isExtensible(m)&&!m.hasOwnProperty("__filemeta")&&Object.defineProperty(m,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/Connecting to Databases/dremio.mdx"}}),m.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-connecting-to-databases-dremio-mdx-e8ba7c0e32901ccb8a71.js.map