Excellent. In the meantime, we extended GT4P3 a bit to also navigate Schemas and Tables' structure. For this, I introduced a few classes such as Database, Schema or Table to ease the inspection and tool creation. Itâs a bit naive for now, but it works quite well. Should these be committed to the P3 directly to enable an object-oriented API for drilling through the DB? Cheers, Doru
On Jan 6, 2019, at 9:17 PM, Sven Van Caekenberghe via Pharo-users <pharo-users@lists.pharo.org> wrote:
From: Sven Van Caekenberghe <sven@stfx.eu> Subject: Re: [Pharo-users] [ANN] P3 version 1.1 Date: January 6, 2019 at 9:17:34 PM GMT+1 To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Nice, I just added convenience methods #listDatabases #listSchemas and #listTablesInSchema: to P3Client so you should be able to make a real browser, connection >> schemas >> tables >> contents (listDatabases is not so useful since you can only connect to 1 database at a time).
On 6 Jan 2019, at 00:01, Tudor Girba <tudor@tudorgirba.com> wrote:
And with a little more code, we now have a dedicated Playground form snippet that opens the database connection without requiring any Pharo code.
<gt4p3-snippet.png>
Cheers, Doru
On Jan 5, 2019, at 12:02 AM, Tudor Girba <tudor@tudorgirba.com> wrote:
You can now query a Postgres database from the new GT. The initial code is available here: https://github.com/feenkcom/gt4p3
It currently looks like this: <gt-inspector-p3-query.png>
Cheers, Doru
On Dec 31, 2018, at 12:33 PM, Sven Van Caekenberghe <sven@stfx.eu> wrote:
Hi,
I created a new release of P3, the modern, lean and mean PostgreSQL client for Pharo.
Version 1.1 contains the following changes:
- added support for Postgres Extended Query protocol (P3PreparedStatement) (thx Jan @jvdsandt) - added support for reading array type values (currently INTEGER[] FLOAT[] BOOLEAN[] TEXT[] VARCHAR[]) - added P3-Tests package and moved all tests there - more comments - more unit tests
https://github.com/svenvc/P3/releases/tag/v1.1
Especially Jan's contribution adds a lot of functionality: the ability to work with prepared statements.
Here is an example doing a batch insert of 100 records (which is more efficient).
| client statement |
client := P3Client url: 'psql://sven@localhost'.
client execute: 'DROP TABLE IF EXISTS table1'. client execute: 'CREATE TABLE table1 (id SERIAL PRIMARY KEY, created_at TIMESTAMP DEFAULT NOW(), name TEXT)'.
statement := client prepare: 'INSERT INTO table1 (name) VALUES ($1)'. statement executeBatch: ((1 to: 100) collect: [ :index | Array with: ('Text #', index printString) ]).
client query: 'SELECT * FROM table1'. client execute: 'DROP TABLE table1'.
statement close. client close.
Season's Greetings to you all.
Sven
-- Sven Van Caekenberghe Proudly supporting Pharo http://pharo.org http://association.pharo.org http://consortium.pharo.org
-- www.feenk.com
"What is more important: To be happy, or to make happy?"
-- www.feenk.com
"Quality cannot be an afterthought."
-- www.feenk.com "No matter how many recipes we know, we still value a chef."