A Python client for interacting with the Ragic API. This library simplifies making requests to Ragic databases, handling authentication, and working with records.
- Easy authentication and connection setup
- Read data
- Write new data
- Modify existing records
- Delete records
- Get single records
- Upload files
- Download files
-
Get your API key from Ragic. link
1.1. Add environment variables to
.envfile:RAGIC_URLRAGIC_NAMESPACERAGIC_API_KEY
-
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
-
Install the package using pip:
pip install python-ragic
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.")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.")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
)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
)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
)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
)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
)