PostgreSQL Benefits
If you need to process more complex data types (e.g. arrays), it is reasonable, IMHO, to use PostgreSQL. On the one hand, it allows you to store much more complex types than SQLite. On the other hand (unlike some relationship databases such as MySQL) PostgreSQL is completely ACID . In short, PostgreSQL is a good choice for highly structured data coming in tabular form and requiring more complex data types, such as arrays. Last, but not least, PostgreSQL is free, open source software developed by an international team of several companies as well as individual members.
Python for PostgreSQL
Regarding access to PostgreSQL from Python, there are several Python drivers for PostgreSQL, for example, Psycopg2 or PyGreSQL (you can look in some lists of such drivers here: https://wiki.postgresql.org/wiki/Python ).
Matlab PostgreSQL Connectors and Their Performance
What about the matching connectors from Matlab, there are several solutions. First of all, you can use the standard Matlab Database Toolbox working with PostgeSQL through a direct JDBC connection. But the Matlab Database Toolbox has some hidden limitations regarding the performance, amount, and type of data to be processed. For example, it is almost impossible to use it for arrays or for substantially large amounts of data (about 1 GB or more). You can use JDBC directly from Matlab (for arrays you can use, for example, the dbarray package ). But IMHO is rather slow and often results in a lack of Java heap memory for the case of big data (and a simple increase in Java heap memory size cannot be a panacea). Thus, these methods are only good if you need to process a relatively small amount of data when the execution of this part is not critical. Other solutions are based on libpq. For example, there is a free mexPostgres package written in C ++. This library analyzes data based on its textual representation (via the PQgetvalue function from libpq) and only for a very limited list of data types (in fact, they are scalar numbers and logics, times, dates, timestamps and intervals, as well as strings, arrays again go out of volume). And finally, there is another commercial solution. This is a high-performance PostgreSQL client library written 100% in C and based on libpq called PgMex . The main (but not the only) difference of PgMex from mexPostgres (despite the fact that both libraries are based on libpq) is that PgMex provides binary data transfer between Matlab and PostgreSQL without any parsing of the text. At the same time, everything is done in a Matlab-friendly and native way (in the form of matrices, multidimensional arrays, structures and arbitrary other Matlab formats). In terms of performance, this can be seen in the following figures comparing the data insert for the Matlab Database Toolbox and PgMex (in terms of data extraction, preliminary results show that PgMex is about 3.5 faster than the Matlab Database Toolbox for the simplest case of scalar numeric data ):

Here the performance of fastinsert and datainsert from the Matlab Database Toolbox is compared with the batchParamExec from PgMex (see https://pgmex.alliedtesting.com/#batchparamexec for details). The first image refers to scalar numerical data, the second refers to arrays. The endpoint of each graph corresponds to a certain maximum amount of data transferred to the database by the appropriate method without any error. The amount of data that exceeds this maximum (specific for each method) causes the "out of Java heap memory" problem (The size of the Java heap for each experiment is indicated at the top of each figure). For more information about experiments, see the following paper with complete benchmarking results for inserting data .