---
title: st.connections.SQLConnection
slug: /develop/api-reference/connections/st.connections.sqlconnection
---
This page only contains the `st.connections.SQLConnection` class. For a deeper dive into creating and managing data connections within Streamlit apps, read [Connecting to data](/develop/concepts/connections/connecting-to-data).
### Basic usage:
[SQLAlchemy](https://pypi.org/project/SQLAlchemy/) and any required drivers must be installed to use this connection.
```python
import streamlit as st
conn = st.connection("sql")
df = conn.query("select * from pet_owners")
st.dataframe(df)
```
In case you want to pass a connection URL (or other parameters) directly, it also works:
```python
conn = st.connection(
"local_db",
type="sql",
url="mysql://user:pass@localhost:3306/mydb"
)
```
Or specify parameters in [secrets](/develop/concepts/connections/secrets-management):
```toml
# .streamlit/secrets.toml
[connections.mydb]
dialect = "mysql"
username = "myuser"
password = "password"
host = "localhost"
database = "mydb"
```
```python
# streamlit_app.py
conn = st.connection("mydb", type="sql", autocommit=True)
```
As described above, some cloud databases use extra `**kwargs` to specify credentials. These can be passed via secrets using the `create_engine_kwargs` section:
```toml
# .streamlit/secrets.toml
[connections.snowflake]
url = "snowflake://@/"
[connections.snowflake.create_engine_kwargs.connect_args]
authenticator = "externalbrowser"
role = "..."
# ...
```