Skip to main content

Python Ragic

A Python client for interacting with the Ragic API. This library simplifies making requests to Ragic databases, handling authentication, and working with records.

PyPI Downloads


Table of Contents


Features

  • Easy authentication and connection setup
  • Read data
  • Write new data
  • Modify existing records
  • Delete records
  • Get single records
  • Upload files
  • Download files

Getting Started

  1. Get your API key from Ragic. link

    1.1. Add environment variables to .env file:

    • RAGIC_URL
    • RAGIC_NAMESPACE
    • RAGIC_API_KEY
  2. Setup structure.yaml.

    2.1. Follow the structure file to define the structure of your database.

    2.2. Retrieve the field id from Ragic. link

  3. Install the package using pip:

    pip install python-ragic
    

Code Snippets

Load Data (Table-level)

from ragic import RagicAPIClient

client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"

data_dict = client.load(
    TAB_NAME,
    TABLE_NAME,
    conditions=[("gender", OperandType.EQUALS, "Male")],
    offset=0,
    size=10,
    other_get_params=OtherGETParameters(subtables=False, listing=False),
    ordering=Ordering(order_by="customer_id", order=OrderingType.ASC),
)

if data_dict:
    with open("data.json", "w", encoding="utf-8") as f:
        f.write(json.dump(data_dict, f, indent=4))
else:
    print("No data found.")

Write new data to Ragic database

from ragic import RagicAPIClient

client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"

# For field that takes attachment, provide the file path
# If more than one file, provide a list of file paths
data_dict = {
    "Name": "John Doe",
    "Age Group": "41 - 50",
    "Race": "Chinese,
}

resp_dict = client.write_new_data(
    TAB_NAME, TABLE_NAME, data=data_dict
)
if resp_dict:
    with open("write_response.json", "w", encoding="utf-8") as f:
        f.write(json.dump(resp_dict, f, indent=4))
    print("Record created successfully.")
else:
    print("Failed to create record.")

Modify Data (single record)

from ragic import RagicAPIClient

client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"

# For field that takes attachment, provide the file path
# If more than one file, provide a list of file paths
# When modifying a record with an attachment, 
# it adds a new file instead of replacing the existing one.

# To replace the existing file, set None to the field name, 
# Take note, this approach deletes all existing files from the field.
# Call upload_file method to upload the new file.
data_dict = {
    "Name": "John Doe",
    "Age Group": "41 - 50",
    "Race": "Chinese"
}
record_id = "<ragicId>"  # Replace with the actual record ID

resp_dict = client.modify_data(
    TAB_NAME,
    TABLE_NAME,
    data=data_dict,
    record_id=record_id
)

Delete Data (single record)

from ragic import RagicAPIClient
client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"

record_id = "<ragicId>"  # Replace with the actual record ID

resp_dict = client.delete_data(
    TAB_NAME,
    TABLE_NAME,
    record_id=record_id
)

Get Data (single record)

from ragic import RagicAPIClient
client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"

record_id = "<ragicId>"  # Replace with the actual record ID

resp_dict = client.get_data(
    TAB_NAME,
    TABLE_NAME,
    record_id=record_id
)

Upload files

from ragic import RagicAPIClient
client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)
TAB_NAME = "Sales Management System"
TABLE_NAME = "customer"
record_id = "<ragicId>"  # Replace with the actual record ID

field_name = "file_upload_field"  # Replace with the actual field name
file_path = "path/to/your/file.png"  # Replace with the actual file path

resp_dict = client.upload_file(
    TAB_NAME,
    TABLE_NAME,
    record_id=record_id,
    field_name=field_name,
    file_path=file_path
)

Download files

from ragic import RagicAPIClient

client = RagicAPIClient(
    base_url=None,
    namespace=None,
    api_key=None,
    version=3,
    structure_path="structure.yaml",
)

# format xxxxx@filename.file_extension
file_identifier = "<fileIdentifier>"  # Replace with the actual file identifier
output_path = "path/to/save/file.png"  # Replace with the desired output path

resp_dict = client.download_file(
    file_identifier=file_identifier,
    output_path=output_path
)

Metadata

Release files for python-ragic 0.3.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-ragic 0.3.2
File Size Uploaded
python_ragic-0.3.2.tar.gz 23.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-ragic 0.3.2
File Interpreter ABI Platform
python_ragic-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 46.4 kB

Release files / python_ragic-0.3.2.tar.gz

Download URL python_ragic-0.3.2.tar.gz
Size 23.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d873dcf01e81deb3e3d4aeb265ed6bf0133ac62316ccb9608cf4726f901366e3
BLAKE2b-256 checksum
How to use checksums
bf916e3edd525e00bbdfd45a60ef89d90a9e5f73adddefe005a013f850c36acb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.11

Release files / python_ragic-0.3.2-py3-none-any.whl

Download URL python_ragic-0.3.2-py3-none-any.whl
Size 23.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d8d16447b988a32e37500f999480ceb9ecd34ff279663482f40c82e5b5cc73d
BLAKE2b-256 checksum
How to use checksums
4b127ce749c3dbeac90276fcdea45659e48a1e66a0a2e94563352b6a8a09159f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.11

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3

2 release files

0.2

2 release files

0.1.1

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page