Merged
Conversation
Implement database read operations with support for SQLite, PostgreSQL, and MySQL: - Add FromSQL, FromSQLContext, FromSQLTx, FromSQLTxContext functions - Support configurable NULL handling (nil, zero, skip_row, custom map) - Add SQL dialect system for database-specific operations - Include comprehensive test suite with 15 tests covering: * Basic read operations and type mapping * All NULL handling modes * Parameterized queries and transactions * Context support and error cases All tests pass successfully.
Implemented DataFrame.ToSQL methods to write data to SQL databases with support for SQLite, PostgreSQL, and MySQL. Features include: - ToSQL, ToSQLContext, ToSQLTx, ToSQLTxContext methods - IfExists modes: fail, replace, append - Batch INSERT with configurable batch size (default 1000) - Auto-create tables with inferred schema - Custom type mapping via TypeMap option - Proper NULL value handling with sql.Null* types - Transaction support for atomic operations Files added: - dataframe/sql_dialect.go (297 lines) - Dialect system - dataframe/sql_write.go (311 lines) - Write implementation - goframe_tests/sql_write_test.go (609 lines) - 14 tests All 54 tests passing (14 new SQL write tests + 40 existing tests)
Updated to add the parseDate logic to convert any type of date input from the database for columns is in the parseDates slice and return a time.Time type. This allows for common time formats, unix time as int, unix time as int64, and fractional seconds/milliseconds.
… in order to streamline this PR and keep it focused on singular feature.
…s the return value only includes a query with the correcet placeholder. The known tablename will be used as the vars argument going into the query function for the specific db driver. Generated tests for sql_dialect.
cs168898
requested changes
Jan 12, 2026
Collaborator
There was a problem hiding this comment.
In this commit (4ede829), I seen you have added sql_read.go and its tests into this PR as well, I personally advise against merging another PR's unapproved changes into the same PR which can cause a lot of discrepancy and complication. PRs should focus on one feature at a time.
I recommend using git rebase -i db-write on the branch that you merged the 2 codes together then only keeping the code BEFORE the merge.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
reference: #33
-- note that I initially created the read and write functionality in the same branch and it took a good refactor to separate them to unique branches. I believe I copied the same sql_dialect file from the read branch to this branch to ensure it doesn't matter which one is merged first.