Integrate Spanner with SQLAlchemy 2 ORM (PostgreSQL dialect)

SQLAlchemy 2 is a Python SQL toolkit and Object Relational Mapper (ORM).

You can use the SQLAlchemy 2 ORM in combination with the standard PostgreSQL psycopg3 driver and PGAdapter.

Set up SQLAlchemy 2 with Spanner PostgreSQL-dialect databases

  1. Ensure that PGAdapter is running on the same machine as the application that is connecting using SQLAlchemy 2 with Spanner.

    For more information, see Start PGAdapter.

  2. Add SQLAlchemy 2 and psycopg3 to your requirements.txt file.

    psycopg~=3.1.8
    sqlalchemy~=2.0.1
    
  3. Specify postgresql+psycopg, localhost and 5432 as the database dialect, driver, server host and port in the SQLAlchemy 2 connection string. psycopg3 requires a username and password in the connection string. PGAdapter ignores these.

    Optionally, specify a different port number if PGAdapter is configured to listen on a port other than the default PostgreSQL port (5432).

    conn_string = "postgresql+psycopg://user:password@localhost:5432/my-database"
    engine = create_engine(conn_string)
    

See the SQLAlchemy 2 with PostgreSQL documentation for more connection options for PostgreSQL.

Use SQLAlchemy 2 with PostgreSQL-dialect databases

For more information about the features and recommendations for SQLAlchemy 2 with PostgreSQL-dialect databases, please consult the reference documentation on GitHub.

What's next

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-04-01 UTC.