 .. Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

 ..   http://www.apache.org/licenses/LICENSE-2.0

 .. Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

.. _howto/connection:sql:

Connecting to a SQL DB
=======================

The SQL Provider package operators allow access to various SQL-like databases. For
databases that can be connected to with a DBApi Hook directly, simply passing the
connection ID with these operators is sufficient. For other connections with more
complicated hooks, the additional parameters can be passed as key word args to the
operators.

Default Connection ID
~~~~~~~~~~~~~~~~~~~~~

SQL Operators under this provider do not default to any connection ID.
