- fix: Remove internal use of transactions (added in 0.6.0), because csvkit's csvsql already starts a transaction.
- feat: Add experimental support for Ingres.
- fix: Restore internal use of transactions instead of savepoints, because not all database engines support savepoints.
- feat: Use Fast Executemany Mode when using the PyODBC SQL Server dialect.
- Add Python 3.12 support.
- Drop support for Python 3.6 (2021-12-23), 3.7 (2023-06-27).
- Allow SQLAlchemy 2. Disallow SQLAlchemy < 1.4.
- Disallow SQLAlchemy 2.
- Fix tests for Linux packages.
- Add wheels distribution.
- Fix test that fails in specific environments.
- Set type to
DATETIME
for datetime (MS SQL). - Drop support for Python 2.7 (EOL 2020-01-01), 3.4 (2019-03-18), 3.5 (2020-09-13).
- Add
min_col_len
andcol_len_multiplier
options to :meth:`.Table.to_sql` to control the length of text columns. - agate-sql is now tested against Python 3.7.
- Drop support for Python 3.3 (end-of-life was September 29, 2017).
Dialect-specific:
- Add support for CrateDB.
- Set type to
BIT
for boolean (MS SQL). - Eliminate SQLite warning about Decimal numbers.
- Add
chunk_size
option to :meth:`.Table.to_sql` to write rows in batches. - Add
unique_constraint
option to :meth:`.Table.to_sql` to include in a UNIQUE constraint.
Dialect-specific:
- Specify precision and scale for
DECIMAL
(MS SQL, MySQL, Oracle). - Set length of
VARCHAR
to1
even if maximum length is0
(MySQL). - Set type to
TEXT
if maximum length is greater than 21,844 (MySQL).
- Add
create_if_not_exists
flag to :meth:`.Table.to_sql`.
- Add
prefixes
option to :func:`.to_sql` to add expressions following the INSERT keyword, like OR IGNORE or OR REPLACE. - Use
TIMESTAMP
instead ofDATETIME
for DateTime columns.
VARCHAR
columns are now generated with proper length constraints (unless explicilty disabled).- Tables can now be created from query results using :func:`.from_sql_query`.
- Add support for running queries directly on tables with :func:`.sql_query`.
- When creating tables,
NOT NULL
constraints will be created by default. - SQL create statements can now be generated without being executed with :func:`.to_sql_create_statement`
- Modified
example.py
so it no longer depends on PostgreSQL. - It is no longer necessary to run
agatesql.patch()
after importing agatesql. - Upgrade required agate to
1.5.0
.
- Add
overwrite
flag to :meth:`.Table.to_sql`. - Removed Python 2.6 support.
- Updated agate dependency to version 1.1.0.
- Additional SQL types are now supported. (#4, #10)
- Add explicit patch function.
- Initial version.