[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XEM1NDKCVRXQC770QYY6WC":3,"skill-same:01M6XEM1NDKCVRXQC770QYY6WC":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6XEM1NDKCVRXQC770QYY6WC","azure-data-tables-py",null,"Azure Tables SDK for Python (Storage and Cosmos DB). Use for NoSQL key-value storage, entity CRUD, and batch operations.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fazure-data-tables-py\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"azure","azure data tables py","data","tables","use","2026","value","unknown","for","entity","key-value","cosmos","db","community","python","operations","crud","nosql","batch","storage","sdk","2026-11-10 10:12:30",false,"---\nname: azure-data-tables-py\ndescription: Azure Tables SDK for Python (Storage and Cosmos DB). Use for NoSQL key-value storage, entity CRUD, and batch operations.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure Tables SDK for Python\n\nNoSQL key-value store for structured data (Azure Storage Tables or Cosmos DB Table API).\n\n## Installation\n\n```bash\npip install azure-data-tables azure-identity\n```\n\n## Environment Variables\n\n```bash\n# Azure Storage Tables\nAZURE_STORAGE_ACCOUNT_URL=https:\u002F\u002F\u003Caccount>.table.core.windows.net\n\n# Cosmos DB Table API\nCOSMOS_TABLE_ENDPOINT=https:\u002F\u002F\u003Caccount>.table.cosmos.azure.com\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.data.tables import TableServiceClient, TableClient\n\ncredential = DefaultAzureCredential()\nendpoint = \"https:\u002F\u002F\u003Caccount>.table.core.windows.net\"\n\n# Service client (manage tables)\nservice_client = TableServiceClient(endpoint=endpoint, credential=credential)\n\n# Table client (work with entities)\ntable_client = TableClient(endpoint=endpoint, table_name=\"mytable\", credential=credential)\n```\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `TableServiceClient` | Create\u002Fdelete tables, list tables |\n| `TableClient` | Entity CRUD, queries |\n\n## Table Operations\n\n```python\n# Create table\nservice_client.create_table(\"mytable\")\n\n# Create if not exists\nservice_client.create_table_if_not_exists(\"mytable\")\n\n# Delete table\nservice_client.delete_table(\"mytable\")\n\n# List tables\nfor table in service_client.list_tables():\n    print(table.name)\n\n# Get table client\ntable_client = service_client.get_table_client(\"mytable\")\n```\n\n## Entity Operations\n\n**Important**: Every entity requires `PartitionKey` and `RowKey` (together form unique ID).\n\n### Create Entity\n\n```python\nentity = {\n    \"PartitionKey\": \"sales\",\n    \"RowKey\": \"order-001\",\n    \"product\": \"Widget\",\n    \"quantity\": 5,\n    \"price\": 9.99,\n    \"shipped\": False\n}\n\n# Create (fails if exists)\ntable_client.create_entity(entity=entity)\n\n# Upsert (create or replace)\ntable_client.upsert_entity(entity=entity)\n```\n\n### Get Entity\n\n```python\n# Get by key (fastest)\nentity = table_client.get_entity(\n    partition_key=\"sales\",\n    row_key=\"order-001\"\n)\nprint(f\"Product: {entity['product']}\")\n```\n\n### Update Entity\n\n```python\n# Replace entire entity\nentity[\"quantity\"] = 10\ntable_client.update_entity(entity=entity, mode=\"replace\")\n\n# Merge (update specific fields only)\nupdate = {\n    \"PartitionKey\": \"sales\",\n    \"RowKey\": \"order-001\",\n    \"shipped\": True\n}\ntable_client.update_entity(entity=update, mode=\"merge\")\n```\n\n### Delete Entity\n\n```python\ntable_client.delete_entity(\n    partition_key=\"sales\",\n    row_key=\"order-001\"\n)\n```\n\n## Query Entities\n\n### Query Within Partition\n\n```python\n# Query by partition (efficient)\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales'\"\n)\nfor entity in entities:\n    print(entity)\n```\n\n### Query with Filters\n\n```python\n# Filter by properties\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales' and quantity gt 3\"\n)\n\n# With parameters (safer)\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq @pk and price lt @max_price\",\n    parameters={\"pk\": \"sales\", \"max_price\": 50.0}\n)\n```\n\n### Select Specific Properties\n\n```python\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales'\",\n    select=[\"RowKey\", \"product\", \"price\"]\n)\n```\n\n### List All Entities\n\n```python\n# List all (cross-partition - use sparingly)\nfor entity in table_client.list_entities():\n    print(entity)\n```\n\n## Batch Operations\n\n```python\nfrom azure.data.tables import TableTransactionError\n\n# Batch operations (same partition only!)\noperations = [\n    (\"create\", {\"PartitionKey\": \"batch\", \"RowKey\": \"1\", \"data\": \"first\"}),\n    (\"create\", {\"PartitionKey\": \"batch\", \"RowKey\": \"2\", \"data\": \"second\"}),\n    (\"upsert\", {\"PartitionKey\": \"batch\", \"RowKey\": \"3\", \"data\": \"third\"}),\n]\n\ntry:\n    table_client.submit_transaction(operations)\nexcept TableTransactionError as e:\n    print(f\"Transaction failed: {e}\")\n```\n\n## Async Client\n\n```python\nfrom azure.data.tables.aio import TableServiceClient, TableClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def table_operations():\n    credential = DefaultAzureCredential()\n    \n    async with TableClient(\n        endpoint=\"https:\u002F\u002F\u003Caccount>.table.core.windows.net\",\n        table_name=\"mytable\",\n        credential=credential\n    ) as client:\n        # Create\n        await client.create_entity(entity={\n            \"PartitionKey\": \"async\",\n            \"RowKey\": \"1\",\n            \"data\": \"test\"\n        })\n        \n        # Query\n        async for entity in client.query_entities(\"PartitionKey eq 'async'\"):\n            print(entity)\n\nimport asyncio\nasyncio.run(table_operations())\n```\n\n## Data Types\n\n| Python Type | Table Storage Type |\n|-------------|-------------------|\n| `str` | String |\n| `int` | Int64 |\n| `float` | Double |\n| `bool` | Boolean |\n| `datetime` | DateTime |\n| `bytes` | Binary |\n| `UUID` | Guid |\n\n## Best Practices\n\n1. **Design partition keys** for query patterns and even distribution\n2. **Query within partitions** whenever possible (cross-partition is expensive)\n3. **Use batch operations** for multiple entities in same partition\n4. **Use `upsert_entity`** for idempotent writes\n5. **Use parameterized queries** to prevent injection\n6. **Keep entities small** — max 1MB per entity\n7. **Use async client** for high-throughput scenarios\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Tables SDK for Python\n\nNoSQL key-value store for structured data (Azure Storage Tables or Cosmos DB Table API).\n\n## Installation\n\n```bash\npip install azure-data-tables azure-identity\n```\n\n## Environment Variables\n\n```bash\n# Azure Storage Tables\nAZURE_STORAGE_ACCOUNT_URL=https:\u002F\u002F\u003Caccount>.table.core.windows.net\n\n# Cosmos DB Table API\nCOSMOS_TABLE_ENDPOINT=https:\u002F\u002F\u003Caccount>.table.cosmos.azure.com\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\nfrom azure.data.tables import TableServiceClient, TableClient\n\ncredential = DefaultAzureCredential()\nendpoint = \"https:\u002F\u002F\u003Caccount>.table.core.windows.net\"\n\n# Service client (manage tables)\nservice_client = TableServiceClient(endpoint=endpoint, credential=credential)\n\n# Table client (work with entities)\ntable_client = TableClient(endpoint=endpoint, table_name=\"mytable\", credential=credential)\n```\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `TableServiceClient` | Create\u002Fdelete tables, list tables |\n| `TableClient` | Entity CRUD, queries |\n\n## Table Operations\n\n```python\n# Create table\nservice_client.create_table(\"mytable\")\n\n# Create if not exists\nservice_client.create_table_if_not_exists(\"mytable\")\n\n# Delete table\nservice_client.delete_table(\"mytable\")\n\n# List tables\nfor table in service_client.list_tables():\n    print(table.name)\n\n# Get table client\ntable_client = service_client.get_table_client(\"mytable\")\n```\n\n## Entity Operations\n\n**Important**: Every entity requires `PartitionKey` and `RowKey` (together form unique ID).\n\n### Create Entity\n\n```python\nentity = {\n    \"PartitionKey\": \"sales\",\n    \"RowKey\": \"order-001\",\n    \"product\": \"Widget\",\n    \"quantity\": 5,\n    \"price\": 9.99,\n    \"shipped\": False\n}\n\n# Create (fails if exists)\ntable_client.create_entity(entity=entity)\n\n# Upsert (create or replace)\ntable_client.upsert_entity(entity=entity)\n```\n\n### Get Entity\n\n```python\n# Get by key (fastest)\nentity = table_client.get_entity(\n    partition_key=\"sales\",\n    row_key=\"order-001\"\n)\nprint(f\"Product: {entity['product']}\")\n```\n\n### Update Entity\n\n```python\n# Replace entire entity\nentity[\"quantity\"] = 10\ntable_client.update_entity(entity=entity, mode=\"replace\")\n\n# Merge (update specific fields only)\nupdate = {\n    \"PartitionKey\": \"sales\",\n    \"RowKey\": \"order-001\",\n    \"shipped\": True\n}\ntable_client.update_entity(entity=update, mode=\"merge\")\n```\n\n### Delete Entity\n\n```python\ntable_client.delete_entity(\n    partition_key=\"sales\",\n    row_key=\"order-001\"\n)\n```\n\n## Query Entities\n\n### Query Within Partition\n\n```python\n# Query by partition (efficient)\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales'\"\n)\nfor entity in entities:\n    print(entity)\n```\n\n### Query with Filters\n\n```python\n# Filter by properties\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales' and quantity gt 3\"\n)\n\n# With parameters (safer)\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq @pk and price lt @max_price\",\n    parameters={\"pk\": \"sales\", \"max_price\": 50.0}\n)\n```\n\n### Select Specific Properties\n\n```python\nentities = table_client.query_entities(\n    query_filter=\"PartitionKey eq 'sales'\",\n    select=[\"RowKey\", \"product\", \"price\"]\n)\n```\n\n### List All Entities\n\n```python\n# List all (cross-partition - use sparingly)\nfor entity in table_client.list_entities():\n    print(entity)\n```\n\n## Batch Operations\n\n```python\nfrom azure.data.tables import TableTransactionError\n\n# Batch operations (same partition only!)\noperations = [\n    (\"create\", {\"PartitionKey\": \"batch\", \"RowKey\": \"1\", \"data\": \"first\"}),\n    (\"create\", {\"PartitionKey\": \"batch\", \"RowKey\": \"2\", \"data\": \"second\"}),\n    (\"upsert\", {\"PartitionKey\": \"batch\", \"RowKey\": \"3\", \"data\": \"third\"}),\n]\n\ntry:\n    table_client.submit_transaction(operations)\nexcept TableTransactionError as e:\n    print(f\"Transaction failed: {e}\")\n```\n\n## Async Client\n\n```python\nfrom azure.data.tables.aio import TableServiceClient, TableClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def table_operations():\n    credential = DefaultAzureCredential()\n    \n    async with TableClient(\n        endpoint=\"https:\u002F\u002F\u003Caccount>.table.core.windows.net\",\n        table_name=\"mytable\",\n        credential=credential\n    ) as client:\n        # Create\n        await client.create_entity(entity={\n            \"PartitionKey\": \"async\",\n            \"RowKey\": \"1\",\n            \"data\": \"test\"\n        })\n        \n        # Query\n        async for entity in client.query_entities(\"PartitionKey eq 'async'\"):\n            print(entity)\n\nimport asyncio\nasyncio.run(table_operations())\n```\n\n## Data Types\n\n| Python Type | Table Storage Type |\n|-------------|-------------------|\n| `str` | String |\n| `int` | Int64 |\n| `float` | Double |\n| `bool` | Boolean |\n| `datetime` | DateTime |\n| `bytes` | Binary |\n| `UUID` | Guid |\n\n## Best Practices\n\n1. **Design partition keys** for query patterns and even distribution\n2. **Query within partitions** whenever possible (cross-partition is expensive)\n3. **Use batch operations** for multiple entities in same partition\n4. **Use `upsert_entity`** for idempotent writes\n5. **Use parameterized queries** to prevent injection\n6. **Keep entities small** — max 1MB per entity\n7. **Use async client** for high-throughput scenarios\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":31,"source":37,"date_added":50,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fazure-data-tables-py","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill azure-data-tables-py",{"tool":63,"command":64},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill azure-data-tables-py",{"tool":66,"command":67},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill azure-data-tables-py","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fazure-data-tables-py\u002FSKILL.md",true,[],[72,94,119,129,142,161],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":45},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[82,83,84,85,86,87,88,89,90,91,92,93],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":45},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[101,102,103,104,105,106,84,107,108,109,110,111,112,113,26,114,115,116,117,118],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","google","install","read","across","api",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":45},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[126,127,101,112,113,26,114,105,84,116,128,117,118,111,109,108,107,115,106,104],"trend radar","radar","pulse",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":45},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[136,137,138,139,140,141],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":153,"publishedAt":45},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[148],{"categoryNo":149,"categoryName":150,"taxonomyType":151,"taxonomyTypeDesc":152},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[144,90,154,155,156,93,112,157,158,159,103,160,115],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":45},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[163,168,169,170,115,171,158,172,173,174,175,176],"status","play","go","latest","github","discover","control","cmd","volume"]