Python: Update Postgres Connector to new Design
Discussed in https://github.com/microsoft/semantic-kernel/discussions/6988
Originally posted by jamesmkfoo23 June 27, 2024 Hi, is postgres supported with Python?
Azure docs for Azure PostgreSQL Flexible python shows the usage psycopg2 https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/connect-python?tabs=cmd%2Cpasswordless#create-a-table-and-insert-data . I believe therefore this should be the correct library psycopg2.
Trying to use the connector but i'm getting this error when i try to import the postgres memory store
from semantic_kernel.connectors.memory.postgres import PostgresMemoryStore
semantic_kernel\connectors\memory\postgres\__init__.py:3
from semantic_kernel.connectors.memory.postgres.postgres_memory_store import (PostgresMemoryStore)
semantic_kernel\connectors\memory\postgres\postgres_memory_store.py:9
from psycopg import Cursor
ModuleNotFoundError: No module named 'psycopg'
Is there any samples for SK pg memory connector?
Install Dependencies: Make sure you have the required dependencies installed: pip install psycopg pip install semantic-kernel
from semantic_kernel import Kernel from semantic_kernel.connectors.memory.postgres import PostgresMemoryStore import psycopg2
Database connection parameters
db_params = { 'dbname': 'your_database_name', 'user': 'your_username', 'password': 'your_password', 'host': 'your_host', 'port': 'your_port' }
Create a connection to the database
connection = psycopg2.connect(**db_params)
Initialize the PostgresMemoryStore
memory_store = PostgresMemoryStore(connection)
Initialize the Kernel with the memory store
kernel = Kernel(memory_store=memory_store)
Example: Using the memory store
Store some data
memory_store.store('some_key', 'some_value')
Retrieve stored data
value = memory_store.retrieve('some_key') print(f'Retrieved value: {value}')
Close the connection when done
connection.close()
Explanation: Install Dependencies: Ensure you have the psycopg and semantic-kernel packages installed. Database Connection Parameters: Update the db_params dictionary with your PostgreSQL database credentials. Create Connection: Establish a connection to the PostgreSQL database using psycopg2.connect. Initialize PostgresMemoryStore: Create an instance of PostgresMemoryStore using the database connection. Initialize Kernel: Pass the memory store to the Kernel initializer. Example Usage: Demonstrates storing and retrieving data from the memory store. Close Connection: Ensure the database connection is closed after operations are completed.
@evchaki is anyone working on this bug?
@eavanvalkenburg - is this one you are working on with the new memory package?
@Niladri24dutta @MaheshBudarapu all memory connectors including this one will move over to the new memory connector model, over the next few weeks, if you want to contribute that would be great! The Azure AI Search, Redis and Qdrant connectors already have a new version (it is based on VectorStore and VectorStoreRecordCollection), we are finalizing the search side of things (CRUD is in those base classes), so once that is finalized then we can push to port the others, but you could give a start to that effort! We'll also keep this issue open to make sure we check the postgres package used.