Mirror of the pgAdmin 4 GIT repo. DO NOT submit pull requests here! Use the [email protected] mailing list. Issues should be logged at https://redmine.postgresql.org/projects/pgadmin4.
pgAdmin 4 is a rewrite of the popular pgAdmin3 management tool for the PostgreSQL (http://www.postgresql.org) database.
In the following documentation and examples, $PGADMIN4_SRC/ is used to denote the top-level directory of a copy of the pgAdmin source tree, either from a tarball or a git checkout.
pgAdmin 4 is written as a web application in Python, using jQuery and Bootstrap for the client side processing and UI. On the server side, Flask is being utilised.
Although developed using web technologies, pgAdmin 4 can be deployed either on a web server using a browser, or standalone on a workstation. The runtime/ subdirectory contains an NWjs based runtime application intended to allow this, which will execute the Python server and display the UI.
To build the runtime, the following packages must be installed:
Change into the runtime directory, and run yarn install. This will install the dependencies required.
In order to use the runtime in a development environment, you'll need to copy dev_config.json.in file to dev_config.json, and edit the paths to the Python executable and pgAdmin.py file, otherwise the runtime will use the default paths it would expect to find in the standard package for your platform.
You can then execute the runtime by running something like:
or on macOS:
In order to run the Python code, a suitable runtime environment is required. Python version 3.6 and later are currently supported. It is recommended that a Python Virtual Environment is setup for this purpose, rather than using the system Python environment. On Linux and Mac systems, the process is fairly simple - adapt as required for your distribution:
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
(venv) $ PATH=$PATH:/usr/local/pgsql/bin pip install -r $PGADMIN4_SRC/requirements.txt
If you are planning to run the regression tests, you also need to install additional requirements from web/regression/requirements.txt:
(venv) $ pip install -r $PGADMIN4_SRC/web/regression/requirements.txt
Create a local configuration file for pgAdmin. Edit $PGADMIN4SRC/web/configlocal.py and add any desired configuration options (use the config.py file as a reference - any settings duplicated in config_local.py will override those in config.py). A typical development configuration may look like:
from config import *
DEBUG = True
SERVER_MODE = True
Enable the test module
CONSOLE_LOG_LEVEL = DEBUG FILE_LOG_LEVEL = DEBUG
DEFAULT_SERVER = '127.0.0.1'
UPGRADE_CHECK_ENABLED = True
Use a different config DB for each server mode.
if SERVER_MODE == False: SQLITE_PATH = os.path.join( DATA_DIR, 'pgadmin4-desktop.db' ) else: SQLITE_PATH = os.path.join( DATA_DIR, 'pgadmin4-server.db' )
This configuration allows easy switching between server and desktop modes for testing.
(venv) $ python3 $PGADMIN4_SRC/web/setup.py
or by starting pgAdmin 4:
(venv) $ python3 $PGADMIN4_SRC/web/pgAdmin4.py
Whilst it is possible to automatically run setup in desktop mode by running the runtime, that will not work in server mode as the runtime doesn't allow command line interaction with the setup program.
At this point you will be able to run pgAdmin 4 from the command line in either server or desktop mode, and access it from a web browser using the URL shown in the terminal once pgAdmin has started up.
Setup of an environment on Windows is somewhat more complicated unfortunately, please see pkg/win32/README.txt for complete details.
To create the bundle, you will need the 'yarn' package management tool to be installed. Then, you can run the following commands on a *nix system to download the required packages and build the bundle:
(venv) $ cd $PGADMIN4_SRC (venv) $ make install-node (venv) $ make bundle
On Windows systems (where "make" is not available), the following commands can be used:
C:\> cd $PGADMIN4_SRC\web C:\$PGADMIN4_SRC\web> yarn install C:\$PGADMIN4_SRC\web> yarn run bundle
To create a pgAdmin theme, you need to create a directory under web/pgadmin/static/scss/resources. Copy the sample file _theme.variables.scss.sample to the new directory and rename it to _theme.variables.scss. Change the desired hexadecimal values of the colors and bundle pgAdmin. You can also add a preview image in the theme directory with the name as <dir name>_preview.png. It is recommended that the preview image should not be larger in size as it may take time to load on slow networks. Run the yarn run bundle and you're good to go. No other changes are required, pgAdmin bundle will read the directory and create other required entries to make them available in preferences.
The name of the theme is derived from the directory name. Underscores (_) and hyphens (-) will be replaced with spaces and the result will be camel cased.
In order to build the docs, an additional Python package is required in the virtual environment. This can be installed with the pip package manager:
$ source venv/bin/activate (venv) $ pip install Sphinx
The docs can then be built using the Makefile in $PGADMIN4_SRC, e.g.
(venv) $ make docs
The output can be found in $PGADMIN4SRC/docs/enUS/_build/html/index.html
Most packages can be built using the Makefile in $PGADMIN4_SRC, provided all the setup and configuration above has been completed.
To build a source tarball:
(venv) $ make src
To build a PIP Wheel, activate either a Python 3 virtual environment, configured with all the required packages, and then run:
(venv) $ make pip
To build the macOS AppBundle, please see pkg/mac/README.
To build the Windows installer, please see pkg/win32/README.txt.
In order to make changes to the SQLite DB, navigate to the 'web' directory:
(venv) $ cd $PGADMIN4_SRC/web
Create a migration file with the following command:
(venv) $ FLASK_APP=pgAdmin4.py flask db revision
This will create a file in: $PGADMIN4SRC/web/migrations/versions/ . Add any changes to the 'upgrade' function. Increment the SCHEMAVERSION in $PGADMIN4SRC/web/pgadmin/model/init_.py file.
There is no need to increment the SETTINGSSCHEMAVERSION.
See https://www.pgadmin.org/support/ for support options.
The source code repository can be found here:
A Redmine project for pgAdmin 4 can be found at the address below. A PostgreSQL community account is required to access this site. Please note that at present only project developers can log bug and feature requests:
If you wish to discuss pgAdmin 4, or contribute to the project, please use the pgAdmin Hackers mailing list: