GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • DOCUMENTATION
  • Tutorials
  • Developer
  • SQL Reference
  • Integrations
  • Releases
  • Drivers
  • Go
  • Python
  • Node.js
  • Java (JDBC)
  • Rust
  • APIs
  • Community

This view

  • Original page
  • New address

GeezerVison is showing docs.databend.com — Python | Databend

Connect to Databend using Python with our official drivers supporting both synchronous and asynchronous operations.

Quick Start​

Choose your preferred approach:

PackageBest ForInstallation
databend-driverDirect database operations, async/awaitpip install databend-driver
databend-sqlalchemyORM integration, existing SQLAlchemy appspip install databend-sqlalchemy

Connection String: See Drivers Overview for DSN format and examples.


databend-driver (Recommended)​

Features​

  • ✅ Native Performance: Direct connection to Databend
  • ✅ Async/Sync Support: Choose your programming style
  • ✅ PEP 249 Compatible: Standard Python DB API
  • ✅ Type Safety: Full Python type mapping

Synchronous Usage​

from databend_driver import BlockingDatabendClient

# Connect and execute
client = BlockingDatabendClient('<your-dsn>')
cursor = client.cursor()

# DDL: Create table
cursor.execute("CREATE TABLE users (id INT, name STRING)")

# Write: Insert data
cursor.execute("INSERT INTO users VALUES (?, ?)", (1, 'Alice'))

# Query: Read data
# Query: Read data
cursor.execute("SELECT * FROM users")

# Get column names
# cursor.description returns a list of tuples, where the first element is the column name
print(f"Columns: {[desc[0] for desc in cursor.description]}")

for row in cursor.fetchall():
# row is a databend_driver.Row object
# Access by column name
print(f"id: {row['id']}, name: {row['name']}")

cursor.close()

Working with Row Objects​

The Row object supports multiple access patterns and methods:

for row in cursor.fetchall():
# 1. Access by column name (Recommended)
print(f"Name: {row['name']}")

# 2. Access by index
print(f"First column: {row[0]}")

# 3. Convert to tuple
print(f"Values: {row.values()}")

# 4. Explicit methods
print(row.get_by_field('name'))
print(row.get_by_index(0))

Asynchronous Usage​

import asyncio
from databend_driver import AsyncDatabendClient

async def main():
client = AsyncDatabendClient('<your-dsn>')
conn = await client.get_conn()

# DDL: Create table
await conn.exec("CREATE TABLE users (id INT, name STRING)")

# Write: Insert data
await conn.exec("INSERT INTO users VALUES (?, ?)", (1, 'Alice'))

# Query: Read data
rows = await conn.query_iter("SELECT * FROM users")
async for row in rows:
print(row.values())

await conn.close()

asyncio.run(main())

databend-sqlalchemy​

For SQLAlchemy ORM integration:

from sqlalchemy import create_engine, text

engine = create_engine('<your-dsn>')
with engine.connect() as conn:
result = conn.execute(text("SELECT 1"))
print(result.fetchall())

Data Type Mappings​

DatabendPythonNotes
Numeric Types
BOOLEANbool
TINYINTint
SMALLINTint
INTint
BIGINTint
FLOATfloat
DOUBLEfloat
DECIMALdecimal.DecimalPrecision preserved
Date/Time
DATEdatetime.date
TIMESTAMPdatetime.datetime
INTERVALdatetime.timedelta
Text/Binary
VARCHARstrUTF-8 encoded
BINARYbytes
Complex Types
ARRAYlistNested structures supported
TUPLEtuple
MAPdict
VARIANTstrJSON-encoded
BITMAPstrBase64-encoded
GEOMETRYstrWKT format

Resources​

  • PyPI: databend-driver • databend-sqlalchemy
  • GitHub: databend-driver • databend-sqlalchemy
Did this page help you?
Yes
FeedBack
Raise issue
Join our growing community
GitHub
🌟 9.5K Stars
Slack
X(Twitter)
YouTube
Or simply contact us directly
Contact Us
Explore Databend Cloud
  • Quick Start
  • databend-driver (Recommended)
    • Features
    • Synchronous Usage
    • Working with Row Objects
    • Asynchronous Usage
  • databend-sqlalchemy
  • Data Type Mappings
  • Resources
Try Databend Cloud for FREE

Multimodal, object-storage-native warehouse for BI, vectors, search, and geo.

Snowflake-compatible SQL with automatic scaling.

Sign up and get $200 in credits.

Try it today
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.