Python 3 DB-API and SQLAlchemy dialect to connect to duckdb over http i.e ( Radio-Duck = https://github.com/jaihind213/radio-duck )
Reason this release was yanked:
testing
Project description
District 5
Python 3 DB-API and SQLAlchemy dialect to connect to duckdb over http i.e ( Radio-Duck )
(inspiried by my favourite movie Mighty ducks - district5 was the original team name for the mighty ducks )
Requirements
- install mamba https://mamba.readthedocs.io/en/latest/
- install docker
cd PROJECT_DIR
mamba create -n district5 python=3.9
mamba activate district5
mamba install poetry
poetry install
Run Tests
#-without integration test
pytest -m "not integration_test"
#-with integration test
docker run -d -p 8000:8000 -t jaihind213/radio-duck:latest
pytest
Let's try it out:
#python 3.9^
pip install district5
#start the duckdb server i.e. radio-duck
docker run -p 8000:8000 -t jaihind213/radio-duck:latest
#the duckdb starts up with a sample table whose ddl is:
#'create table pond(duck_type string, total int)'
echo "we will try to query that"
from sqlalchemy import create_engine, text
from sqlalchemy.dialects import registry
registry.register(
"radio_duck.district5", "radio_duck.sqlalchemy", "RadioDuckDialect"
)
#run docker instance of radio-duck
#docker run -p 8000:8000 -t jaihind213/radio-duck:latest
engine = create_engine(
"radio_duck+district5://user:pass@localhost:8000/?api=/v1/sql/&scheme=http"
)
# Establish a database connection
conn = engine.connect()
# Define a SQL query using qmark style or positional style
try:
query_1 = text("""SELECT duck_type, total FROM pond where total > :total""")
params = {"total": 0}
result = conn.execute(query_1, params)
# Fetch and print the results
for row in result:
print(row)
print("--------------")
query_2 = "SELECT duck_type, total FROM pond where total > ?"
result = conn.execute(query_2, (0,))
for row in result:
print(row)
except Exception as e:
print(f"An error occurred: {e}")
finally:
# Close the database connection
conn.close()
engine.dispose()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
district5-0.1.14.tar.gz
(16.3 kB
view hashes)
Built Distribution
district5-0.1.14-py3-none-any.whl
(19.4 kB
view hashes)
Close
Hashes for district5-0.1.14-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a16a219960121067d344872791cae204dd0f7b2c0e5e101e84477220a2aa2395 |
|
MD5 | 57de8e1ac099e3a51ee13103a9fda245 |
|
BLAKE2b-256 | 5a3d7dabbad4910680704f530b8512daa8e457c735bfaa64e3e4c52105c16ac3 |