Skip to main content

A Python module for simplifying interactions with PostgreSQL databases, with rich console output for better readability and debugging.

Project description

sonnixgres

A Python module for simplifying interactions with PostgreSQL databases, with rich console output for better readability and debugging.

Installation

Install sonnixgres using pip:

pip install sonnixgres

Usage

First, ensure that your PostgreSQL credentials are set as environment variables.

Create a .env file in your CDW with the following database enviornment variables:

DB_HOST=your_database_host
DB_DATABASE=your_database_name
DB_USER=your_database_username
DB_PASSWORD=your_database_password
DB_PORT=5432
DB_SCHEMA=your_database_schema
DB_TABLE=your_database_table

sonnixgres uses these variables to establish database connections.

from sonnixgres import create_connection, query_database, save_results_to_csv, create_and_populate_table, update_records, create_view
import pandas as pd

# Establish a database connection
connection = create_connection()

# Example usage of each function

Functions

create_connection()

Establishes a connection to the PostgreSQL database using credentials from environment variables.

query_database(connection, query, params=None, close_connection=True)

Executes a SQL query on the database and returns the result as a Pandas DataFrame.

  • connection: The database connection object.
  • query: SQL query string.
  • params: Optional parameters for the SQL query.
  • close_connection: Whether to close the database connection after executing the query.

save_results_to_csv(dataframe, filename)

Saves a Pandas DataFrame to a CSV file.

  • dataframe: The DataFrame to be saved.
  • filename: The name of the file where data will be saved.

create_and_populate_table(connection, table_name, dataframe, populate=False)

Creates a new table in the database and optionally populates it with data from a DataFrame.

  • connection: The database connection object.
  • table_name: Name of the table to be created.
  • dataframe: DataFrame whose data will be used to populate the table.
  • populate: If True, the table will be populated with data from the DataFrame.

display_results_as_table(dataframe, max_column_width=50)

Displays a pandas DataFrame as a table in the console, with an internal row limit for display.

  • dataframe: The pandas DataFrame to be displayed.

  • max_column_width: Optional maximum width for each column in the table, defaulting to 50 characters.

  • display_limit: Internal parameter set to 50, limits the number of rows displayed to the first 50 rows if the DataFrame exceeds this size.

    import pandas as pd
    from sonnixgres import display_results_as_table
    
    # Create or load a DataFrame
    df = pd.DataFrame({
        'Column1': [1, 2, 3, 4, 5],
        'Column2': ['A', 'B', 'C', 'D', 'E']
    })
    
    # Display the DataFrame in the console as a table
    display_results_as_table(df, max_column_width=20)
    

create_view(connection, view_name, view_query, close_connection=True)

Creates a new view in the database.

  • connection: The database connection object.

  • view_name: Name of the view to be created.

  • view_query: SQL query string for creating the view.

  • close_connection: Whether to close the database connection after creating the view.

    def display_results_as_table(dataframe: pd.DataFrame, max_column_width: int = 100) -> None:

    console = Console()

    display_limit = 100

    function

    This function displays a pandas DataFrame as a table in the console using the rich library's Console and Table classes. It is designed to neatly present the data with a limitation on the maximum width of each column and the number of rows displayed.

Parameters

  • dataframe (pd.DataFrame): The pandas DataFrame that needs to be displayed.

  • max_column_width (int, optional): The maximum width for each column in the table. Defaults to 50 characters.

    Returns

  • The function returns None. It directly prints the table to the console.

    Behavior

  • The function initializes a rich.console.Console object to handle the console output.

  • It sets a display limit of 50 rows. If the DataFrame has more than 50 rows, it only displays the first 50 rows and prints a message indicating this limit. This message also suggests using the 'save_results_to_csv' function to view all data.

  • The function creates a rich.table.Table object with headers (bold and magenta style) based on the DataFrame's columns.

  • Each column is added to the table with a specified max_column_width to control the display width.

  • Rows from the DataFrame (or limited DataFrame, if applicable) are added to the table.

  • Finally, the table is printed to the console using the Console object.

    Example

    Here's an example of how to use the display_results_as_table function:

    import pandas as pd
    from rich.console import Console
    from rich.table import Table
    
    # Assuming 'df' is your pandas DataFrame
    display_results_as_table(df)
    

License

BSD License

Contributions

Contributions are welcome. Please open an issue or submit a pull request with your improvements.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sonnixgres-0.1.1.tar.gz (4.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sonnixgres-0.1.1.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

sonnixgres-0.1.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file sonnixgres-0.1.1.tar.gz.

File metadata

  • Download URL: sonnixgres-0.1.1.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.0 Linux/6.5.0-14-generic

File hashes

Hashes for sonnixgres-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e9a56fd6e6a178442ca7c3544ac79b04d7cdc70426f139ec744b5d24643680b4
MD5 23c62e4ee0c66b13ddf2ec3e4ffcf4a9
BLAKE2b-256 8b221042525ebab3b547222e154847916281a7d828ef454e6a1a8b6460531bec

See more details on using hashes here.

File details

Details for the file sonnixgres-0.1.1.0-py3-none-any.whl.

File metadata

  • Download URL: sonnixgres-0.1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.0 Linux/6.5.0-14-generic

File hashes

Hashes for sonnixgres-0.1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2c35158130fa792eb9051a426eb6da87727a127e5096d04639af511d623cd70a
MD5 dc3e75844eb486b15978c88e19714e47
BLAKE2b-256 1e9980e0a6b814235d8ee0143269c9183e7835e3364ab040ec3ca1ea8157a6fb

See more details on using hashes here.

File details

Details for the file sonnixgres-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sonnixgres-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.0 Linux/6.5.0-14-generic

File hashes

Hashes for sonnixgres-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1baac6826e6686a96b673ba187bf6527db9decba827afa39f36c07b16193dfd6
MD5 0efe2a65ec8ec718a053865b8011b031
BLAKE2b-256 d5a77953ea1881ea6fb52c354d4d2083fee29153c83640ce9c20d66cdc08b014

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page