---
# System prepended metadata

title: Extra psycopg2 examples

---

# Extra psycopg2 examples


### Reading data with `psycopg2`
Write a `SQL` statement using the `SELECT` keyword and execute it with the cursor.
```python=
# Selecting records
def get_widgets_by_color(color):
    # Fetching many records (find widgets by color):
    with psycopg2.connect(**CONNECTION_PARAMETERS) as conn:
        with conn.cursor() as curs:
            curs.execute(
                """
                SELECT *  FROM widgets
                WHERE color = %(color)s
                """,
                {"color": color})
            results = curs.fetchall()
            return results
```



---

### Updating data with `psycopg2`
Use `UPDATE` keyword from `SQL`.
```python=
# Updating an existing record
def update_widget_color(widget_id, new_color):
    with psycopg2.connect(**CONNECTION_PARAMETERS) as conn:
        with conn.cursor() as curs:
            curs.execute(
                """
                UPDATE widgets SET color = %(new_color)s
                WHERE id = %(widget_id)s
                """,
                {
                    "widget_id": widget_id,
                    "new_color": new_color})
```



---

### Deleting data with `psycopg2`
Use `DELETE` keyword from `SQL`. (... see a pattern here?).
```python=
def delete_widget(widget_id):
    with psycopg2.connect(**CONNECTION_PARAMETERS) as conn:
        with conn.cursor() as curs:
            curs.execute(
                """
                DELETE FROM widgets 
                WHERE id = %(widget_id)s
                """,
                {"widget_id": widget_id})
```


---