No description
- C 86.5%
- Python 13.5%
| lib4d_sql | ||
| src/p4d | ||
| .gitignore | ||
| LICENSE | ||
| MANIFEST.in | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| setup.py | ||
| uv.lock | ||
p4d
p4d is a Python Database API 2.0 compliant driver for the 4D (4th Dimension) database server.
Changes
v2.1 2026-07-30:
- Greatly increased the size of many of the buffers in the interne file so the library no longer hits a buffer overflow when asking for more than 125 columns one can probably pull at least 250 columns at a time now.
v2.0 2026-07-22:
- The library will no longer error out if given a duration greater than 1 day or negative time. It just passes this as a blank time instead. Is this a good change? ...? I leave this unanswered.
- Giant rewrite to make the library line up more with how a usual DB API 2 library should look like. Fixed a few bugs in the process. May have let in more.
v1.8 2023-01-13:
- Fix datatype in C library to properly handle characters >128
v1.7 2017-10-26:
- Handle decoding of strings from 4D when the string contains corrupted data
- Change "Binary" data type to subclass of "bytes" rather than subclass of "str"
v1.6.1 2017-10-13:
- Fix potential issue where memory is freed too soon
v1.6 2017-10-12:
- Don't close the connection when calling close on a cursor
- Fix some potential buffer overflows when performing queries with many columns
v1.5 2017-10-06:
- explicitly set cursor.result to none when closing connection to avoid possible double-free issue
v1.4 2017-07-21:
- Add port number as optional parameter to connect call
- Fix includes in C code needed for proper compilation on some newer OS versions
v1.3 2016-10-05:
- Properly decode integer result fields on python3
v1.2 2016-07-15:
- Fix bug that could cause strings to become garbage when doing an insert/update with long strings
v1.1 2016-02-19:
- Fix bug where the inability to prepare a query prevented the query from being run at all.
v1.0 2016-02-11:
- Enable cursor/connection to work as context managers
- Wrap all queries in a transaction block
v0.9 2016-02-10:
- Fix bug that called .decode() on a str object in python 3
- Add support for "pyformat" style parameter markers
- Add support for "format" style parameter markers
- Add support for "named" style parameter markers
v0.8 2015-11-24:
- Changes for python 3 compatibility
v0.7 2015-09-30:
- Fix bug with running multiple queries in a row on the same cursor
v0.6 2015-02-17:
- Fix bug with handling of time values containing milliseconds
v0.5.1 2014-12-23:
- Improved method of freeing memory used by the fetchone call
v0.5 2014-12-22:
- Fix remaining memory leak with execute many call. Turns out there were leaks both in the C library as well as in how I was calling the library. Testing now shows memory usage stable at 11MB when processing a 1,000,000 record result set.
v0.4 2014-12-18:
- Fix memory leak when doing an execute many call (there may still be a small leak with individual executes, depending on how CFFI handles memory)
- Fix performance issue when performing large executemany queries
v0.3 2014-12-17:
- improve performance of module when receiving large datasets containing date/time values.
- Close statement after execution when doing an insert many
- Fix potential issue when doing large "execute many" queries
v0.2 2014-12-16:
- Fixed lib4d_sql bug preventing proper paging for some queries
- Fixed lib4d_sql bug preventing use of "long" queries or argument strings
- Fixed lib4d_sql bug not preparing the queries on the server before running
- Changed default pagesize parameter back to 100 since paging should now work
v0.1.1: -Inital release