-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5757177
commit 9d68d65
Showing
6 changed files
with
359 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,14 +4,14 @@ title: Python | |
|
||
Databend offers the following Python packages enabling you to develop Python applications that interact with Databend: | ||
|
||
- [databend-py (**Recommended**)](https://github.com/databendcloud/databend-py): Provides a direct interface to the Databend database. It allows you to perform standard Databend operations such as user login, database and table creation, data insertion/loading, and querying. | ||
- [databend-driver (**Recommended**)](https://pypi.org/project/databend-driver/): A Python driver for Databend, providing both synchronous and asynchronous interfaces to interact with the Databend database, execute SQL queries, and handle data operations. | ||
- [databend-sqlalchemy](https://github.com/databendcloud/databend-sqlalchemy): Provides a SQL toolkit and [Object-Relational Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping) to interface with the Databend database. [SQLAlchemy](https://www.sqlalchemy.org/) is a popular SQL toolkit and ORM for Python, and databend-SQLAlchemy is a dialect for SQLAlchemy that allows you to use SQLAlchemy to interact with Databend. | ||
|
||
Both packages require Python version 3.5 or higher. To check your Python version, run `python --version` in your command prompt. To install the latest `databend-py` or `databend-sqlalchemy` package: | ||
Both packages require Python version 3.7 or higher. To check your Python version, run `python --version` in your command prompt. To install the latest `databend-driver` or `databend-sqlalchemy` package: | ||
|
||
```bash | ||
# install databend-py | ||
pip install databend-py | ||
# install databend-driver | ||
pip install databend-driver | ||
|
||
# install databend-sqlalchemy | ||
pip install databend-sqlalchemy | ||
|
@@ -47,9 +47,7 @@ This table illustrates the correspondence between Databend semi-structured data | |
| BITMAP | str | | ||
| GEOMETRY | str | | ||
|
||
In the following tutorial, you'll learn how to utilize the packages above to develop your Python applications. The tutorial will walk you through creating a SQL user in Databend and then writing Python code to create a table, insert data, and perform data queries. | ||
|
||
## Tutorial-1: Integrating with Databend using Python | ||
## Tutorial-1: Integrating with Self-Hosted Databend | ||
|
||
Before you start, make sure you have successfully installed a local Databend. For detailed instructions, see [Local and Docker Deployments](/guides/deploy/deploy/non-production/deploying-local). | ||
|
||
|
@@ -64,75 +62,63 @@ CREATE USER user1 IDENTIFIED BY 'abc123'; | |
GRANT ALL on *.* TO user1; | ||
``` | ||
|
||
### Step 2. Configuring Connection String (for databend-py) | ||
|
||
`databend-py` supports various parameters that can be configured either as URL parameters or as properties passed to the Client. The two examples provided below demonstrate equivalent ways of setting these parameters for the common DSN: | ||
|
||
Example 1: Using URL parameters | ||
|
||
```python | ||
# Format: <schema>://<username>:<password>@<host_port>/<database>?<connection_params> | ||
client = Client.from_url('http://root@localhost:8000/db?secure=False©_purge=True&debug=True') | ||
``` | ||
|
||
Example 2: Using Client parameters | ||
|
||
```python | ||
client = Client( | ||
host='tenant--warehouse.ch.datafusecloud.com', | ||
database="default", | ||
user="user", | ||
port="443", | ||
password="password", settings={"copy_purge": True, "force": True}) | ||
``` | ||
|
||
To create a valid DSN, select appropriate connection parameters outlined [here](https://github.com/databendcloud/databend-py/blob/main/docs/connection.md) based on your requirements. | ||
|
||
### Step 3. Write a Python Program | ||
### Step 2. Write a Python Program | ||
|
||
In this step, you'll create a simple Python program that communicates with Databend. The program will involve tasks such as creating a table, inserting data, and executing data queries. | ||
|
||
import Tabs from '@theme/Tabs'; | ||
import TabItem from '@theme/TabItem'; | ||
|
||
<Tabs groupId="python"> | ||
<TabItem value="databend-py" label="databend-py"> | ||
|
||
You will use the databend-py library to create a client instance and execute SQL queries directly. | ||
<TabItem value="databend-driver" label="databend-driver"> | ||
|
||
1. Install databend-py. | ||
1. Install databend-driver. | ||
|
||
```shell | ||
pip install databend-py | ||
pip install databend-driver | ||
``` | ||
|
||
2. Copy and paste the following code to the file `main.py`: | ||
|
||
```python title='main.py' | ||
from databend_py import Client | ||
from databend_driver import BlockingDatabendClient | ||
|
||
# Connecting to a local Databend with a SQL user named 'user1' and password 'abc123' as an example. | ||
# Feel free to use your own values while maintaining the same format. | ||
# Setting secure=False means the client will connect to Databend using HTTP instead of HTTPS. | ||
client = Client('user1:[email protected]', port=8000, secure=False) | ||
client.execute("CREATE DATABASE IF NOT EXISTS bookstore") | ||
client.execute("USE bookstore") | ||
client.execute("CREATE TABLE IF NOT EXISTS booklist(title VARCHAR, author VARCHAR, date VARCHAR)") | ||
client.execute("INSERT INTO booklist VALUES('Readings in Database Systems', 'Michael Stonebraker', '2004')") | ||
client = BlockingDatabendClient('databend://user1:[email protected]:8000/?sslmode=disable') | ||
|
||
_, results = client.execute("SELECT * FROM booklist") | ||
for (title, author, date) in results: | ||
print("{} {} {}".format(title, author, date)) | ||
client.execute('drop table booklist') | ||
client.execute('drop database bookstore') | ||
# Create a cursor to interact with Databend | ||
cursor = client.cursor() | ||
|
||
# Close Connect. | ||
client.disconnect() | ||
# Create database and use it | ||
cursor.execute("CREATE DATABASE IF NOT EXISTS bookstore") | ||
cursor.execute("USE bookstore") | ||
|
||
# Create table | ||
cursor.execute("CREATE TABLE IF NOT EXISTS booklist(title VARCHAR, author VARCHAR, date VARCHAR)") | ||
|
||
# Insert data into the table | ||
cursor.execute("INSERT INTO booklist VALUES('Readings in Database Systems', 'Michael Stonebraker', '2004')") | ||
|
||
# Query data from the table | ||
cursor.execute("SELECT * FROM booklist") | ||
rows = cursor.fetchall() | ||
|
||
# Print the results | ||
for row in rows: | ||
print(f"{row[0]} {row[1]} {row[2]}") | ||
|
||
# Drop the table and database | ||
cursor.execute('DROP TABLE booklist') | ||
cursor.execute('DROP DATABASE bookstore') | ||
|
||
# Close the cursor | ||
cursor.close() | ||
``` | ||
|
||
3. Run `python main.py`: | ||
|
||
```text | ||
```bash | ||
python main.py | ||
Readings in Database Systems Michael Stonebraker 2004 | ||
``` | ||
|
||
|
@@ -230,31 +216,61 @@ Readings in Database Systems Michael Stonebraker 2004 | |
</TabItem> | ||
</Tabs> | ||
|
||
## Tutorial-2: Integrating with Databend Cloud using Python (databend-py) | ||
## Tutorial-2: Integrating with Databend Cloud using databend-driver | ||
|
||
Before you start, make sure you have successfully created a warehouse and obtained the connection information. For how to do that, see [Connecting to a Warehouse](/guides/cloud/using-databend-cloud/warehouses#connecting). | ||
|
||
### Step 1. Install Dependencies with pip | ||
|
||
```shell | ||
pip install databend-py | ||
pip install databend-driver | ||
``` | ||
|
||
### Step 2. Connect with databend-py | ||
### Step 2. Connect with databend-driver | ||
|
||
1. Copy and paste the following code to the file `main.py`: | ||
|
||
```python | ||
from databend_py import Client | ||
|
||
client = Client.from_url(f"databend://{USER}:{PASSWORD}@${HOST}:443/{DATABASE}?&warehouse={WAREHOUSE_NAME}&secure=True) | ||
client.execute('DROP TABLE IF EXISTS data') | ||
client.execute('CREATE TABLE if not exists data (x Int32,y VARCHAR)') | ||
client.execute('DESC data') | ||
client.execute("INSERT INTO data (Col1,Col2) VALUES ", [1, 'yy', 2, 'xx']) | ||
_, res = client.execute('select * from data') | ||
print(res) | ||
from databend_driver import BlockingDatabendClient | ||
|
||
# Connecting to Databend Cloud with your credentials (replace PASSWORD, HOST, DATABASE, and WAREHOUSE_NAME) | ||
client = BlockingDatabendClient(f"databend://cloudapp:{PASSWORD}@{HOST}:443/{DATABASE}?warehouse={WAREHOUSE_NAME}") | ||
|
||
# Get a cursor from the client to execute queries | ||
cursor = client.cursor() | ||
|
||
# Drop the table if it exists | ||
cursor.execute('DROP TABLE IF EXISTS data') | ||
|
||
# Create the table if it doesn't exist | ||
cursor.execute('CREATE TABLE IF NOT EXISTS data (x Int32, y String)') | ||
|
||
# Describe the table | ||
cursor.execute('DESC data') | ||
|
||
# Insert data into the table | ||
cursor.execute("INSERT INTO data (x, y) VALUES (1, 'yy'), (2, 'xx')") | ||
|
||
# Select all data from the table | ||
cursor.execute('SELECT * FROM data') | ||
|
||
# Fetch all rows from the result | ||
rows = cursor.fetchall() | ||
|
||
# Print the result | ||
for row in rows: | ||
print(row.values()) | ||
``` | ||
|
||
2. Run `python main.py`: | ||
|
||
```bash | ||
python main.py | ||
(1, 'yy') | ||
(2, 'xx') | ||
``` | ||
|
||
## Tutorial-3: Integrating with Databend Cloud using Python (databend-sqlalchemy) | ||
## Tutorial-3: Integrating with Databend Cloud using databend-sqlalchemy | ||
|
||
Before you start, make sure you have successfully created a warehouse and obtained the connection information. For how to do that, see [Connecting to a Warehouse](/guides/cloud/using-databend-cloud/warehouses#connecting). | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"label": "Programming" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"label": "Python" | ||
} |
59 changes: 59 additions & 0 deletions
59
...als/programming/python/integrating-with-databend-cloud-using-databend-driver.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
--- | ||
title: Integrating with Databend Cloud using databend-driver | ||
--- | ||
|
||
In this tutorial, we'll walk you through how to use the `databend-driver` to connect to Databend Cloud, create a table, insert data, and retrieve results with Python. | ||
|
||
## Before You Start | ||
|
||
Before you start, make sure you have successfully created a warehouse and obtained the connection information. For how to do that, see [Connecting to a Warehouse](/guides/cloud/using-databend-cloud/warehouses#connecting). | ||
|
||
## Step 1: Install Dependencies with pip | ||
|
||
```shell | ||
pip install databend-driver | ||
``` | ||
|
||
## Step 2: Connect with databend-driver | ||
|
||
1. Copy and paste the following code to the file `main.py`: | ||
|
||
```python | ||
from databend_driver import BlockingDatabendClient | ||
|
||
# Connecting to Databend Cloud with your credentials (replace PASSWORD, HOST, DATABASE, and WAREHOUSE_NAME) | ||
client = BlockingDatabendClient(f"databend://cloudapp:{PASSWORD}@{HOST}:443/{DATABASE}?warehouse={WAREHOUSE_NAME}") | ||
|
||
# Get a cursor from the client to execute queries | ||
cursor = client.cursor() | ||
|
||
# Drop the table if it exists | ||
cursor.execute('DROP TABLE IF EXISTS data') | ||
|
||
# Create the table if it doesn't exist | ||
cursor.execute('CREATE TABLE IF NOT EXISTS data (x Int32, y String)') | ||
|
||
# Describe the table | ||
cursor.execute('DESC data') | ||
|
||
# Insert data into the table | ||
cursor.execute("INSERT INTO data (x, y) VALUES (1, 'yy'), (2, 'xx')") | ||
|
||
# Select all data from the table | ||
cursor.execute('SELECT * FROM data') | ||
|
||
# Fetch all rows from the result | ||
rows = cursor.fetchall() | ||
|
||
# Print the result | ||
for row in rows: | ||
print(row.values()) | ||
``` | ||
|
||
2. Run `python main.py`: | ||
|
||
```bash | ||
python main.py | ||
(1, 'yy') | ||
(2, 'xx') | ||
``` |
38 changes: 38 additions & 0 deletions
38
...programming/python/integrating-with-databend-cloud-using-databend-sqlalchemy.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
--- | ||
title: Integrating with Databend Cloud using databend-sqlalchemy | ||
--- | ||
|
||
In this tutorial, we'll walk you through how to use the `databend-sqlalchemy` library to connect to Databend Cloud, create a table, insert data, and query results using Python. | ||
|
||
## Before You Start | ||
|
||
Before you start, make sure you have successfully created a warehouse and obtained the connection information. For how to do that, see [Connecting to a Warehouse](/guides/cloud/using-databend-cloud/warehouses#connecting). | ||
|
||
## Step 1: Install Dependencies with pip | ||
|
||
```shell | ||
pip install databend-sqlalchemy | ||
``` | ||
|
||
## Step 2: Connect with databend_sqlalchemy | ||
|
||
1. Copy and paste the following code to the file `main.py`: | ||
|
||
```python | ||
from databend_sqlalchemy import connector | ||
|
||
# Connecting to Databend Cloud with your credentials (replace PASSWORD, HOST, DATABASE, and WAREHOUSE_NAME) | ||
cursor = connector.connect(f"databend://cloudapp:{PASSWORD}@{HOST}:443/{DATABASE}?warehouse={WAREHOUSE_NAME}").cursor() | ||
cursor.execute('DROP TABLE IF EXISTS data') | ||
cursor.execute('CREATE TABLE IF NOT EXISTS data( Col1 TINYINT, Col2 VARCHAR )') | ||
cursor.execute("INSERT INTO data (Col1, Col2) VALUES (%s, %s), (%s, %s)", [1, 'yy', 2, 'xx']) | ||
cursor.execute("SELECT * FROM data") | ||
print(cursor.fetchall()) | ||
``` | ||
|
||
2. Run `python main.py`: | ||
|
||
```bash | ||
python main.py | ||
[(1, 'yy'), (2, 'xx')] | ||
``` |
Oops, something went wrong.