{"id":13936168,"url":"https://github.com/insightindustry/sqlathanor","last_synced_at":"2026-02-23T05:01:58.550Z","repository":{"id":35077542,"uuid":"137494226","full_name":"insightindustry/sqlathanor","owner":"insightindustry","description":"Serialization / De-serialization support for the SQLAlchemy Declarative ORM","archived":false,"fork":false,"pushed_at":"2022-04-28T19:34:34.000Z","size":1218,"stargazers_count":111,"open_issues_count":13,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-11-27T22:26:24.415Z","etag":null,"topics":["csv","deserialization","json","python-library","serialization","sqlalchemy","yaml"],"latest_commit_sha":null,"homepage":"https://sqlathanor.readthedocs.io/en/latest/index.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/insightindustry.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.rst","contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-06-15T14:00:46.000Z","updated_at":"2025-02-07T14:14:54.000Z","dependencies_parsed_at":"2022-08-08T04:16:25.892Z","dependency_job_id":null,"html_url":"https://github.com/insightindustry/sqlathanor","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/insightindustry/sqlathanor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightindustry%2Fsqlathanor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightindustry%2Fsqlathanor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightindustry%2Fsqlathanor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightindustry%2Fsqlathanor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insightindustry","download_url":"https://codeload.github.com/insightindustry/sqlathanor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightindustry%2Fsqlathanor/sbom","scorecard":{"id":489667,"data":{"date":"2025-08-11","repo":{"name":"github.com/insightindustry/sqlathanor","commit":"a5cfd349d092b25a3ffb3950b996b13878e1db17"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":4,"reason":"Found 3/7 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/python-test-publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/insightindustry/sqlathanor/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/insightindustry/sqlathanor/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-test-publish.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/insightindustry/sqlathanor/python-test-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-test-publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/insightindustry/sqlathanor/python-test-publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:23","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/python-test-publish.yml:24","Warn: pipCommand not pinned by hash: .github/workflows/python-test-publish.yml:25","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T18:44:36.545Z","repository_id":35077542,"created_at":"2025-08-19T18:44:36.545Z","updated_at":"2025-08-19T18:44:36.545Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","deserialization","json","python-library","serialization","sqlalchemy","yaml"],"created_at":"2024-08-07T23:02:25.785Z","updated_at":"2026-02-23T05:01:58.529Z","avatar_url":"https://github.com/insightindustry.png","language":"Python","readme":"####################################################\nSQLAthanor\n####################################################\n\n**Serialization/De-serialization Support for the SQLAlchemy Declarative ORM**\n\n.. image:: https://sqlathanor.readthedocs.io/en/latest/_static/sqlathanor-logo-200x100.png\n  :align: right\n  :alt: SQLAthanor - Serialization/De-serialization for SQLAlchemy\n  :target: https://sqlathanor.readthedocs.io/en/latest/index.html\n\n.. list-table::\n   :widths: 10 90\n   :header-rows: 1\n\n   * - Branch\n     - Unit Tests\n   * - `latest \u003chttps://github.com/insightindustry/sqlathanor/tree/master\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=master\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/master/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=latest\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=latest\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.7 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.7.0\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.7.0\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.7.0/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.7.0\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.7.0\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.6 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.6.0\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.6.0\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.6.0/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.6.0\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.6.0\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.5 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.5.1\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.5.1\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.5.1/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.5.1\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.5.1\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.4 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.4.0\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.4.0\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.4.0/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.4.0\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.4.0\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.3 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.3.1\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.3.1\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.3.1/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.3.1\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.3.1\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.2 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.2.2\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.2.2\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.2.2/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.2.2\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.2.2\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `v.0.1 \u003chttps://github.com/insightindustry/sqlathanor/tree/v.0.1.1\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=v.0.1.1\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/v.0.1.1/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=v.0.1.1\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=v.0.1.1\n         :alt: Documentation Status (ReadTheDocs)\n\n   * - `develop \u003chttps://github.com/insightindustry/sqlathanor/tree/develop\u003e`_\n     -\n       .. image:: https://travis-ci.com/insightindustry/sqlathanor.svg?branch=develop\n         :target: https://travis-ci.com/insightindustry/sqlathanor\n         :alt: Build Status (Travis CI)\n\n       .. image:: https://codecov.io/gh/insightindustry/sqlathanor/branch/develop/graph/badge.svg\n         :target: https://codecov.io/gh/insightindustry/sqlathanor\n         :alt: Code Coverage Status (Codecov)\n\n       .. image:: https://readthedocs.org/projects/sqlathanor/badge/?version=develop\n         :target: http://sqlathanor.readthedocs.io/en/latest/?badge=develop\n         :alt: Documentation Status (ReadTheDocs)\n\n**SQLAthanor** is a Python library that extends `SQLAlchemy \u003chttp://www.sqlalchemy.org\u003e`_'s fantastic\n`Declarative ORM \u003chttp://www.sqlalchemy.org/en/latest/orm/extensions/declarative/index.html\u003e`_ to provide\neasy-to-use record serialization/de-serialization with support for:\n\n  * JSON\n  * CSV\n  * YAML\n  * Python dict\n\nThe library works as a drop-in extension - change one line of existing code, and\nit should just work. Furthermore, it has been extensively tested on Python 2.7,\n3.4, 3.5, 3.6, 3.7, and 3.8 using `SQLAlchemy \u003chttp://www.sqlalchemy.org\u003e`_ 0.9 and higher.\n\n**COMPLETE DOCUMENTATION:** http://sqlathanor.readthedocs.org/en/latest/index.html\n\n.. contents::\n :depth: 3\n :backlinks: entry\n\n-----------------\n\n***************\nInstallation\n***************\n\nTo install **SQLAthanor**, just execute:\n\n.. code:: bash\n\n $ pip install sqlathanor\n\n\nDependencies\n==============\n\n.. list-table::\n   :widths: 50 50\n   :header-rows: 1\n\n   * - Python 3.x\n     - Python 2.7\n   * - | * `SQLAlchemy v.0.9 \u003chttps://www.sqlalchemy.org\u003e`_ or higher\n       | * `PyYAML v3.10 \u003chttps://github.com/yaml/pyyaml\u003e`_ or higher\n       | * `simplejson v3.0 \u003chttps://simplejson.readthedocs.io/en/latest/\u003e`_ or higher\n       | * `Validator-Collection v1.4.0 \u003chttps://github.com/insightindustry/validator-collection\u003e`_ or higher\n     - | * `SQLAlchemy v.0.9 \u003chttps://www.sqlalchemy.org\u003e`_ or higher\n       | * `PyYAML v3.10 \u003chttps://github.com/yaml/pyyaml\u003e`_ or higher\n       | * `simplejson v3.0 \u003chttps://simplejson.readthedocs.io/en/latest/\u003e`_ or higher\n       | * `Validator-Collection v1.4.0 \u003chttps://github.com/insightindustry/validator-collection\u003e`_ or higher\n\n-------------\n\n************************************\nWhy SQLAthanor?\n************************************\n\nOdds are you've used `SQLAlchemy \u003chttp://www.sqlalchemy.org\u003e`_ before. And if\nyou haven't, why on earth not? It is hands down the best relational database\ntoolkit and Object Relational Mapper (ORM) available for Python, and\nhas helped me quickly write code for many APIs, software platforms, and data science\nprojects. Just look at some of these great `features \u003chttp://www.sqlalchemy.org/features.html\u003e`_.\n\nAs its name suggests, SQLAlchemy focuses on the problem of connecting your Python\ncode to an underlying relational (SQL) database. That's a super hard problem, especially\nwhen you consider the complexity of abstraction, different SQL databases, different SQL\ndialects, performance optimization, etc. It ain't easy, and the SQLAlchemy team\nhas spent years building one of the most elegant solutions out there.\n\nBut as hard as Pythonically communicating with a database is, in the real world\nwith microservices, serverless architectures, RESTful APIs and the like we often\nneed to do more with the data than read or write from/to our database. In almost\nall of the projects I've worked on over the last two decades, I've had to:\n\n  * hand data off in some fashion (serialize) for another\n    program (possibly written by someone else in another programming language) to work\n    with, or\n  * accept and interpret data (de-serialize) received\n    from some other program (possibly written by someone else in another programming\n    language).\n\nPython objects (pickled or not) are great, but they're rarely\nthe best way of transmitting data over the wire, or communicating data between\nindependent applications. Which is where formats like JSON, CSV, and YAML come in.\n\nSo when writing many Python APIs, I found myself writing methods to convert my\nSQLAlchemy records (technically, model instances) into JSON\nor creating new SQLAlchemy records based on data I received in JSON. So after writing\nsimilar methods many times over, I figured a better approach would be to write the\nserialization/de-serialization code just once, and then re-use it across all of\nmy various projects.\n\nWhich is how **SQLAthanor** came about.\n\nIt adds simple methods like `to_json() \u003chttp://sqlathanor.readthedocs.org/en/latest/using.html#sqlathanor.BaseModel.to_json\u003e`_,\n`new_from_csv() \u003chttp://sqlathanor.readthedocs.org/en/latest/using.html#sqlathanor.BaseModel.new_from_csv\u003e`_, and\n`update_from_csv() \u003chttp://sqlathanor.readthedocs.org/en/latest/using.html#sqlathanor.BaseModel.update_from_json\u003e`_\nto your SQLAlchemy declarative models and provides powerful configuration options that give you tons of flexibility.\n\nKey SQLAthanor Features\n==========================\n\n* **Easy to adopt**: Just tweak your existing SQLAlchemy ``import`` statements and\n  you're good to go.\n* With one method call, convert SQLAlchemy model instances to:\n\n  * CSV records\n  * JSON objects\n  * YAML objects\n  * Python ``dict`` objects (technically, ``OrderedDict`` objects but they\n    behave just like ``dict``)\n\n* With one method call, create or update SQLAlchemy model instances from:\n\n  * Python ``dict`` or ``OrderedDict`` objects\n  * CSV records\n  * JSON objects\n  * YAML objects\n\n* Decide which serialization formats you want to support for which models.\n* Decide which columns/attributes you want to include in their serialized form\n  (and pick different columns for different formats, too).\n* Default validation for de-serialized data for every SQLAlchemy data type.\n* Customize the validation used when de-serializing particular columns to match\n  your needs.\n* Works with Declarative Reflection and the SQLAlchemy Automap extension.\n* Programmatically generate Declarative Base Models from serialized data.\n* Programmatically generate SQLAlchemy ``Table`` objects from serialized data.\n\n\n**SQLAthanor** vs Alternatives\n================================\n\nFor a comparison of **SQLAthanor** to various alternative\nserialization/de-serialization approaches, please see full documentation:\nhttps://sqlathanor.readthedocs.io/en/latest/index.html#sqlathanor-vs-alternatives\n\n---------------\n\n***********************************\nComplete Documentation\n***********************************\n\n**SQLAthanor** is a complex library that integrates with other complex libraries.\nWe strongly recommend that you review our comprehensive documentation at:\n\n  https://sqlathanor.readthedocs.org/en/latest/index.html\n\n--------------\n\n*********************\nQuestions and Issues\n*********************\n\nYou can ask questions and report issues on the project's\n`Github Issues Page \u003chttps://github.com/insightindustry/sqlathanor/issues\u003e`_\n\n-----------------\n\n*********************\nContributing\n*********************\n\nWe welcome contributions and pull requests! For more information, please see the\n`Contributor Guide \u003chttp://sqlathanor.readthedocs.org/en/latest/contributing.html\u003e`_\n\n-------------------\n\n*********************\nTesting\n*********************\n\nWe use `TravisCI \u003chttp://travisci.org\u003e`_ for our build automation,\n`Codecov.io \u003chttp://codecov.io\u003e`_ for our test coverage, and\n`ReadTheDocs \u003chttps://readthedocs.org\u003e`_ for our documentation.\n\nDetailed information about our test suite and how to run tests locally can be\nfound in our `Testing Reference \u003chttp://sqlathanor.readthedocs.org/en/latest/testing.html\u003e`_.\n\n--------------------\n\n**********************\nLicense\n**********************\n\n**SQLAthanor** is made available under an\n`MIT License \u003chttp://sqlathanor.readthedocs.org/en/latest/license.html\u003e`_.\n\n.. _SQLAlchemy: http://www.sqlalchemy.org\n.. _Flask-SQLAlchemy: http://flask-sqlalchemy.pocoo.org/2.3/\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsightindustry%2Fsqlathanor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsightindustry%2Fsqlathanor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsightindustry%2Fsqlathanor/lists"}