{"library":"pykeepass","title":"PyKeePass","description":"PyKeePass is a Python library that enables interaction with KeePass databases, supporting both KDBX3 and KDBX4 formats. It allows users to read, create, update, and save entries and groups within a KeePass file. The library is actively maintained with frequent releases, typically every few months.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pykeepass"],"cli":null},"imports":["from pykeepass import PyKeePass"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pykeepass import PyKeePass, create_database\n\nDB_PATH = 'my_database.kdbx'\nMASTER_PASSWORD = os.environ.get('KEEPASS_MASTER_PASSWORD', 'supersecurepassword')\n\n# Create a new KeePass database\nif not os.path.exists(DB_PATH):\n    print(f\"Creating new database at {DB_PATH}\")\n    kp = create_database(filename=DB_PATH, password=MASTER_PASSWORD)\n    # Add a root group if it doesn't exist (create_database usually handles this)\n    # kp.add_group(kp.root_group, 'General')\n    kp.save()\n\n# Open an existing KeePass database\nprint(f\"Opening database: {DB_PATH}\")\nkp = PyKeePass(DB_PATH, password=MASTER_PASSWORD)\n\n# Add a new entry if it doesn't exist\nif not kp.find_entries(title='Example Entry', first=True):\n    print(\"Adding new entry: 'Example Entry'\")\n    # The path argument should be a list of strings for group hierarchy (v4.0.0+)\n    entry = kp.add_entry(kp.root_group, 'Example Entry', 'testuser', 'entry_password_123', notes='This is a test entry.')\n    print(f\"Added entry: {entry.title} ({entry.username})\")\nelse:\n    print(\"Entry 'Example Entry' already exists.\")\n\n# Find an entry and retrieve its password\nentry = kp.find_entries(title='Example Entry', first=True) # Use first=True for a single entry\nif entry:\n    print(f\"Found entry '{entry.title}'. Username: {entry.username}, Password: {entry.password}\")\n    # Update an entry\n    entry.notes = 'Updated notes for the test entry.'\n    entry.tags = ['web', 'test']\n    print(f\"Entry notes updated: {entry.notes}\")\n    print(f\"Entry tags updated: {entry.tags}\")\nelse:\n    print(\"Entry 'Example Entry' not found.\")\n\n# Save changes to the database\nkp.save()\nprint(\"Database saved successfully.\")\n\n# Clean up (optional)\n# os.remove(DB_PATH)\n# print(f\"Cleaned up: Removed {DB_PATH}\")\n","lang":"python","description":"This quickstart demonstrates how to create a new KeePass database, open an existing one, add a new entry, find an entry by its title, retrieve its credentials, update its properties, and save the changes. Ensure you set the `KEEPASS_MASTER_PASSWORD` environment variable or replace the placeholder password.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"4.1.1.post1","pypi_latest":"4.1.1.post1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":3.1,"avg_import_s":0.43,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.44,"mem_mb":9.2,"disk_size":"41.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.2,"import_time_s":0.28,"mem_mb":9.2,"disk_size":"42M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.53,"mem_mb":10.3,"disk_size":"44.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.48,"mem_mb":10.3,"disk_size":"46M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.47,"mem_mb":10.2,"disk_size":"36.4M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0.46,"mem_mb":10.2,"disk_size":"37M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.45,"mem_mb":10.4,"disk_size":"36.1M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.8,"import_time_s":0.44,"mem_mb":10.4,"disk_size":"37M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.38,"mem_mb":10.1,"disk_size":"41.6M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pykeepass","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.8,"import_time_s":0.34,"mem_mb":10.1,"disk_size":"43M"}]}}