py-linq-sql


Namepy-linq-sql JSON
Version 1.9.10.1 PyPI version JSON
download
home_pagehttps://gitlab.obspm.fr/exoplanet/py-linq-sql
SummaryA Python module used for interacting with sql database using LINQ syntax.
upload_time2023-12-15 16:15:21
maintainerCHOSSON Ulysse
docs_urlNone
authorCHOSSON Ulysse
requires_python>=3.10,<4.0.0
licenseEUPL v1.2
keywords linq py-linq sql database requests
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <!-- markdownlint-disable-file MD024 MD041 -->

![maintenance](https://img.shields.io/maintenance/yes/2023)
![open issue](https://img.shields.io/gitlab/issues/open-raw/exoplanet/py-linq-sql?gitlab_url=https%3A%2F%2Fgitlab.obspm.fr)

[![pipeline status](https://gitlab.obspm.fr/exoplanet/py-linq-sql/badges/main/pipeline.svg)](https://gitlab.obspm.fr/exoplanet/py-linq-sql/-/commits/main)
[![coverage report](https://gitlab.obspm.fr/exoplanet/py-linq-sql/badges/main/coverage.svg)](https://gitlab.obspm.fr/exoplanet/py-linq-sql/-/commits/main)

![Banner](https://py-linq-sql.readthedocs.io/en/latest/banner.png)

# Py-Linq-SQL

A Python module used for interacting with sql database using [LINQ](https://docs.microsoft.com/fr-fr/dotnet/api/system.linq.enumerable?view=net-6.0)
syntax. The project is under [EUPL License v1.2](LICENSE.md).

Py-linq-sql allows you to go from (SQLAlchemy using direct text query):

```python
conn.execute(
  text(
    """SELECT "data"->'obj'->'name' as name """
    """FROM "objects" """
    """WHERE "data"->'obj'->>'name' == "earth" """
    """AND CAST("data"->'obj'->'mass' > 0.5 AS Decimal) """
    """LIMIT 1 OFFSET 2"""
  )
)
```

to the safer and easier to read:

```python
sqle = (
  SQLEnumerable(conn, "objects")  # objects is the name of the table
  .select(lambda x: {"name": x.data.obj.name})  # data is a JSONB column
  .where(lambda x: x.data.obj.mass > 0.5)  # data is a JSONB column
  .skip(2)
  .take(1)  # this is the last part of the query, till there nothing is executed
  .execute()  # now we ask for the whole query to be executed on the DB server
)
```

Pro :

- all the query expression are expressed in pure python expression
- easy support of JSON database using a simple object notation
- very difficult to have an SQL injection (only the names of the tables are strings)
- standardized syntax/API of LINQ (used in java, C# and many .net languages)
- very fast: even very long and complex queries are executed in one single query on the
  server
- no need to define a class for every table in the DB as you would do in an ORM here you
  write query assuming the tables, columns and fields exist, if not then you get a clear
  error about it
- results are pylinq Enumerable that are themselves queryable in same way but locally
- all kinds of join (inner, outer and full, with or without intersections) are easy to
  use and combine with any kind of query

Cons :

- currently only support PostgresQL

Any feedback is welcome see [Contributing](CONTRIBUTING.md).

## Contacts

- Author: Ulysse CHOSSON (LESIA)
- Maintainer: Ulysse CHOSSON (LESIA)
- Email: <ulysse.chosson@obspm.fr>
- Contributors:
  - Pierre-Yves MARTIN (LESIA)

## Table of Content

- [Py-Linq-SQL](#py-linq-sql)
  - [Contacts](#contacts)
  - [Table of Content](#table-of-content)
  - [Install](#install)
  - [Implemented functions](#implemented-functions)
    - [LINQ functions](#linq-functions)
    - [Custom functions](#custom-functions)
  - [Not implemented functions](#not-implemented-functions)
    - [LINQ functions](#linq-functions-1)
    - [Py-Linq functions](#py-linq-functions)
  - [Contributing and info for developers](#contributing-and-info-for-developers)
  - [Full documentation](#full-documentation)

## Install

For all specific commands to this project, we use [just](https://github.com/casey/just).
**You need to install it.**

After you can install the dependencies:

```bash
$ just install
pwd
/home/uchosson/Documents/py-linq-sql
poetry install --no-dev --remove-untracked
Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in pyproject.toml.
You may be getting outdated dependencies. Run update to update them.

No dependencies to install or update

Installing the current project: py-linq-sql (0.109.0)
```

And if you need to develop the project, install development dependencies:

```bash
$ just install-all
pwd
/home/uchosson/Documents/py-linq-sql
poetry install --remove-untracked
Installing dependencies from lock file
Warning: The lock file is not up to date with the latest changes in pyproject.toml.
You may be getting outdated dependencies. Run update to update them.

No dependencies to install or update

Installing the current project: py-linq-sql (0.109.0)
npm install

up to date, audited 8 packages in 793ms

1 package is looking for funding
  run `npm fund` for details

found 0 vulnerabilities
sudo npm install markdownlint-cli2 --global

changed 36 packages, and audited 37 packages in 2s

8 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
```

and the pre-commit dependencies:

```bash
$ just preinstall
pwd
/home/uchosson/Documents/py-linq-sql
pre-commit clean
Cleaned /home/uchosson/.cache/pre-commit.
pre-commit autoupdate
Updating https://github.com/pre-commit/pre-commit-hooks ...
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
already up to date.
Updating https://github.com/pre-commit/pre-commit-hooks ... already up to date.
Updating https://github.com/pycqa/isort ...
[INFO] Initializing environment for https://github.com/pycqa/isort.
already up to date.
Updating https://github.com/ambv/black ...
[INFO] Initializing environment for https://github.com/ambv/black.
already up to date.
Updating https://github.com/codespell-project/codespell ...
[INFO] Initializing environment for https://github.com/codespell-project/codespell.
already up to date.
Updating https://github.com/sqlfluff/sqlfluff ...
[INFO] Initializing environment for https://github.com/sqlfluff/sqlfluff.
updating 1.1.0 -> 1.2.1.
Updating https://github.com/pycqa/flake8 ...
[INFO] Initializing environment for https://github.com/pycqa/flake8.
already up to date.
Updating https://github.com/DavidAnson/markdownlint-cli2 ...
[INFO] Initializing environment for https://github.com/DavidAnson/markdownlint-cli2.
already up to date.
pre-commit install --hook-type pre-merge-commit
pre-commit installed at .git/hooks/pre-merge-commit
pre-commit install --hook-type pre-push
pre-commit installed at .git/hooks/pre-push
pre-commit install --hook-type post-rewrite
pre-commit installed at .git/hooks/post-rewrite
pre-commit install-hooks
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/ambv/black.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/codespell-project/codespell.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/sqlfluff/sqlfluff.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pycqa/flake8.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/DavidAnson/markdownlint-cli2.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
pre-commit install
pre-commit installed at .git/hooks/pre-commit
```

## Implemented functions

### LINQ functions

[LINQ documentation](https://docs.microsoft.com/fr-fr/dotnet/api/system.linq.enumerable?view=net-6.0)

All function make before an `.execute()` are executed by the database server.

MDPA = MagicDotPathAggregate
<!-- markdownlint-disable MD013 -->
|Method Name           |Description                                                          |Output        |
|:---------------------|:--------------------------------------------------------------------|:-------------|
|all                   |Return True if all elements match the predicate.                     |SQLEnumerable |
|any                   |Return True if any elements match the predicate.                     |SQLEnumerable |
|avg                   |Aggregation function to get the average of the predicate.            |MDPA          |
|contains              |Return True if at least one element match the predicate.             |SQLEnumerable |
|concat                |Aggregation function to concat a predicate.                          |MDPA          |
|count                 |Return the number of line in a table.                                |SQLEnumerable |
|count                 |Aggregation function to count a predicate.                           |MDPA          |
|distinct              |Return all elements that are not duplicate.                          |SQLEnumerable |
|element_at            |Return the element at the specific index.                            |SQLEnumerable |
|element_at_or_default |Return the element at the specific index or None if index > len.     |SQLEnumerable |
|except                |Returns all elements except elements from another SQLEnumerable.     |SQLEnumerable |
|first                 |Return the first element match the predicate.                        |SQLEnumerable |
|first_or_default      |Return the first element match the predicate or None if none match.  |SQLEnumerable |
|group_by              |Return the selection group by a predicate.                           |SQLEnumerable |
|group_join            |Return the join between 2 selections group by a predicate.           |SQLEnumerable |
|intersect             |Return the intersection between 2 selections.                        |SQLEnumerable |
|join                  |Return the join between 2 selections.                                |SQLEnumerable |
|last                  |Return the last element match the predicate.                         |SQLEnumerable |
|last_or_default       |Return the last element match the predicate or None if none match.   |SQLEnumerable |
|max                   |Return the max element.                                              |SQLEnumerable |
|max                   |Aggregate function to get the max of predicate.                      |MDPA          |
|min                   |Return the min element.                                              |SQLEnumerable |
|min                   |Aggregate function to get the min of predicate.                      |MDPA          |
|order_by              |Return the selection order by key(s).                                |SQLEnumerable |
|order_by_descending   |Return the selection order by descending by key(s).                  |SQLEnumerable |
|select                |Return a selection of elements.                                      |SQLEnumerable |
|single                |Return the only element match the predicate.                         |SQLEnumerable |
|single_or_default     |Return the only element match the predicate or None if many matches. |SQLEnumerable |
|skip                  |Return the selection minus _X_ first elements.                       |SQLEnumerable |
|skip_last             |Return the selection minus _X_ last elements.                        |SQLEnumerable |
|sum                   |Aggregation function to get the sum of a predicate.                  |MDPA          |
|take                  |Return _X_ first element of the selection.                           |SQLEnumerable |
|take_last             |Return _X_ last element of the selection.                            |SQLEnumerable |
|union                 |Return the union between 2 selections.                               |SQLEnumerable |
|where                 |Return the selection with all elements match the predicate.          |SQLEnumerable |
<!-- markdownlint-enable MD013 -->

For more information see the [detailed documentation](https://py-linq-sql.readthedocs.io/en/latest/api/sqle/sqlenumerable/).

### Custom functions

<!-- markdownlint-disable MD013 -->
|Method Name   |Description                                         |Output                            |
|:-------------|:---------------------------------------------------|:---------------------------------|
|delete        |Delete data in a SQL table.                         |SQLEnumerable                     |
|execute       |Execute a request from an SQLEnumerable.            |Enumerable or int or bool or dict |
|insert        |Insert data in a SQL table.                         |SQLEnumerable                     |
|simple_insert |Insert data in a relationnal SQL table with kwargs. |SQLEnumerable                     |
|update        |Update data in a table.                             |SQLEnumerable                     |
<!-- markdownlint-enable MD013 -->

## Not implemented functions

### LINQ functions

|Method Name      |Description     |
|:----------------|:---------------|
|append           |Not implemented |
|default_if_empty |Not implemented |
|empty            |Not implemented |
|prepend          |Not implemented |
|range            |Not implemented |
|repeat           |Not implemented |
|reverse          |Not implemented |
|select_many      |Not implemented |
|skip_while       |Not implemented |
|take_while       |Not implemented |
|to_dictionary    |Not implemented |
|to_list          |Not implemented |
|zip              |Not implemented |

### Py-Linq functions

|Method Name|Description     |
|:----------|:---------------|
|add        |Not implemented |
|median     |Not implemented |

[Py-Linq link](https://viralogic.github.io/py-enumerable)

## Contributing and info for developers

- [Changelog](CHANGELOG.md)
- [Contributing](CONTRIBUTING.md)
- [Our git workflow](https://py-linq-sql.readthedocs.io/en/latest/workflow/)

## Full documentation

- [Py-LINQ-SQL Documentation](https://py-linq-sql.readthedocs.io/en/latest/)

            

Raw data

            {
    "_id": null,
    "home_page": "https://gitlab.obspm.fr/exoplanet/py-linq-sql",
    "name": "py-linq-sql",
    "maintainer": "CHOSSON Ulysse",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0.0",
    "maintainer_email": "ulysse.chosson@obspm.fr",
    "keywords": "linq,py-linq,sql,database,requests",
    "author": "CHOSSON Ulysse",
    "author_email": "ulysse.chosson@obspm.fr",
    "download_url": "https://files.pythonhosted.org/packages/fd/43/44188abb655da786827b78100c37972c7faf3d7b42ef1d2903956ca73649/py_linq_sql-1.9.10.1.tar.gz",
    "platform": null,
    "description": "<!-- markdownlint-disable-file MD024 MD041 -->\n\n![maintenance](https://img.shields.io/maintenance/yes/2023)\n![open issue](https://img.shields.io/gitlab/issues/open-raw/exoplanet/py-linq-sql?gitlab_url=https%3A%2F%2Fgitlab.obspm.fr)\n\n[![pipeline status](https://gitlab.obspm.fr/exoplanet/py-linq-sql/badges/main/pipeline.svg)](https://gitlab.obspm.fr/exoplanet/py-linq-sql/-/commits/main)\n[![coverage report](https://gitlab.obspm.fr/exoplanet/py-linq-sql/badges/main/coverage.svg)](https://gitlab.obspm.fr/exoplanet/py-linq-sql/-/commits/main)\n\n![Banner](https://py-linq-sql.readthedocs.io/en/latest/banner.png)\n\n# Py-Linq-SQL\n\nA Python module used for interacting with sql database using [LINQ](https://docs.microsoft.com/fr-fr/dotnet/api/system.linq.enumerable?view=net-6.0)\nsyntax. The project is under [EUPL License v1.2](LICENSE.md).\n\nPy-linq-sql allows you to go from (SQLAlchemy using direct text query):\n\n```python\nconn.execute(\n  text(\n    \"\"\"SELECT \"data\"->'obj'->'name' as name \"\"\"\n    \"\"\"FROM \"objects\" \"\"\"\n    \"\"\"WHERE \"data\"->'obj'->>'name' == \"earth\" \"\"\"\n    \"\"\"AND CAST(\"data\"->'obj'->'mass' > 0.5 AS Decimal) \"\"\"\n    \"\"\"LIMIT 1 OFFSET 2\"\"\"\n  )\n)\n```\n\nto the safer and easier to read:\n\n```python\nsqle = (\n  SQLEnumerable(conn, \"objects\")  # objects is the name of the table\n  .select(lambda x: {\"name\": x.data.obj.name})  # data is a JSONB column\n  .where(lambda x: x.data.obj.mass > 0.5)  # data is a JSONB column\n  .skip(2)\n  .take(1)  # this is the last part of the query, till there nothing is executed\n  .execute()  # now we ask for the whole query to be executed on the DB server\n)\n```\n\nPro :\n\n- all the query expression are expressed in pure python expression\n- easy support of JSON database using a simple object notation\n- very difficult to have an SQL injection (only the names of the tables are strings)\n- standardized syntax/API of LINQ (used in java, C# and many .net languages)\n- very fast: even very long and complex queries are executed in one single query on the\n  server\n- no need to define a class for every table in the DB as you would do in an ORM here you\n  write query assuming the tables, columns and fields exist, if not then you get a clear\n  error about it\n- results are pylinq Enumerable that are themselves queryable in same way but locally\n- all kinds of join (inner, outer and full, with or without intersections) are easy to\n  use and combine with any kind of query\n\nCons :\n\n- currently only support PostgresQL\n\nAny feedback is welcome see [Contributing](CONTRIBUTING.md).\n\n## Contacts\n\n- Author: Ulysse CHOSSON (LESIA)\n- Maintainer: Ulysse CHOSSON (LESIA)\n- Email: <ulysse.chosson@obspm.fr>\n- Contributors:\n  - Pierre-Yves MARTIN (LESIA)\n\n## Table of Content\n\n- [Py-Linq-SQL](#py-linq-sql)\n  - [Contacts](#contacts)\n  - [Table of Content](#table-of-content)\n  - [Install](#install)\n  - [Implemented functions](#implemented-functions)\n    - [LINQ functions](#linq-functions)\n    - [Custom functions](#custom-functions)\n  - [Not implemented functions](#not-implemented-functions)\n    - [LINQ functions](#linq-functions-1)\n    - [Py-Linq functions](#py-linq-functions)\n  - [Contributing and info for developers](#contributing-and-info-for-developers)\n  - [Full documentation](#full-documentation)\n\n## Install\n\nFor all specific commands to this project, we use [just](https://github.com/casey/just).\n**You need to install it.**\n\nAfter you can install the dependencies:\n\n```bash\n$ just install\npwd\n/home/uchosson/Documents/py-linq-sql\npoetry install --no-dev --remove-untracked\nInstalling dependencies from lock file\nWarning: The lock file is not up to date with the latest changes in pyproject.toml.\nYou may be getting outdated dependencies. Run update to update them.\n\nNo dependencies to install or update\n\nInstalling the current project: py-linq-sql (0.109.0)\n```\n\nAnd if you need to develop the project, install development dependencies:\n\n```bash\n$ just install-all\npwd\n/home/uchosson/Documents/py-linq-sql\npoetry install --remove-untracked\nInstalling dependencies from lock file\nWarning: The lock file is not up to date with the latest changes in pyproject.toml.\nYou may be getting outdated dependencies. Run update to update them.\n\nNo dependencies to install or update\n\nInstalling the current project: py-linq-sql (0.109.0)\nnpm install\n\nup to date, audited 8 packages in 793ms\n\n1 package is looking for funding\n  run `npm fund` for details\n\nfound 0 vulnerabilities\nsudo npm install markdownlint-cli2 --global\n\nchanged 36 packages, and audited 37 packages in 2s\n\n8 packages are looking for funding\n  run `npm fund` for details\n\nfound 0 vulnerabilities\n```\n\nand the pre-commit dependencies:\n\n```bash\n$ just preinstall\npwd\n/home/uchosson/Documents/py-linq-sql\npre-commit clean\nCleaned /home/uchosson/.cache/pre-commit.\npre-commit autoupdate\nUpdating https://github.com/pre-commit/pre-commit-hooks ...\n[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.\nalready up to date.\nUpdating https://github.com/pre-commit/pre-commit-hooks ... already up to date.\nUpdating https://github.com/pycqa/isort ...\n[INFO] Initializing environment for https://github.com/pycqa/isort.\nalready up to date.\nUpdating https://github.com/ambv/black ...\n[INFO] Initializing environment for https://github.com/ambv/black.\nalready up to date.\nUpdating https://github.com/codespell-project/codespell ...\n[INFO] Initializing environment for https://github.com/codespell-project/codespell.\nalready up to date.\nUpdating https://github.com/sqlfluff/sqlfluff ...\n[INFO] Initializing environment for https://github.com/sqlfluff/sqlfluff.\nupdating 1.1.0 -> 1.2.1.\nUpdating https://github.com/pycqa/flake8 ...\n[INFO] Initializing environment for https://github.com/pycqa/flake8.\nalready up to date.\nUpdating https://github.com/DavidAnson/markdownlint-cli2 ...\n[INFO] Initializing environment for https://github.com/DavidAnson/markdownlint-cli2.\nalready up to date.\npre-commit install --hook-type pre-merge-commit\npre-commit installed at .git/hooks/pre-merge-commit\npre-commit install --hook-type pre-push\npre-commit installed at .git/hooks/pre-push\npre-commit install --hook-type post-rewrite\npre-commit installed at .git/hooks/post-rewrite\npre-commit install-hooks\n[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/pycqa/isort.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/ambv/black.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/codespell-project/codespell.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/sqlfluff/sqlfluff.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/pycqa/flake8.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\n[INFO] Installing environment for https://github.com/DavidAnson/markdownlint-cli2.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\npre-commit install\npre-commit installed at .git/hooks/pre-commit\n```\n\n## Implemented functions\n\n### LINQ functions\n\n[LINQ documentation](https://docs.microsoft.com/fr-fr/dotnet/api/system.linq.enumerable?view=net-6.0)\n\nAll function make before an `.execute()` are executed by the database server.\n\nMDPA = MagicDotPathAggregate\n<!-- markdownlint-disable MD013 -->\n|Method Name           |Description                                                          |Output        |\n|:---------------------|:--------------------------------------------------------------------|:-------------|\n|all                   |Return True if all elements match the predicate.                     |SQLEnumerable |\n|any                   |Return True if any elements match the predicate.                     |SQLEnumerable |\n|avg                   |Aggregation function to get the average of the predicate.            |MDPA          |\n|contains              |Return True if at least one element match the predicate.             |SQLEnumerable |\n|concat                |Aggregation function to concat a predicate.                          |MDPA          |\n|count                 |Return the number of line in a table.                                |SQLEnumerable |\n|count                 |Aggregation function to count a predicate.                           |MDPA          |\n|distinct              |Return all elements that are not duplicate.                          |SQLEnumerable |\n|element_at            |Return the element at the specific index.                            |SQLEnumerable |\n|element_at_or_default |Return the element at the specific index or None if index > len.     |SQLEnumerable |\n|except                |Returns all elements except elements from another SQLEnumerable.     |SQLEnumerable |\n|first                 |Return the first element match the predicate.                        |SQLEnumerable |\n|first_or_default      |Return the first element match the predicate or None if none match.  |SQLEnumerable |\n|group_by              |Return the selection group by a predicate.                           |SQLEnumerable |\n|group_join            |Return the join between 2 selections group by a predicate.           |SQLEnumerable |\n|intersect             |Return the intersection between 2 selections.                        |SQLEnumerable |\n|join                  |Return the join between 2 selections.                                |SQLEnumerable |\n|last                  |Return the last element match the predicate.                         |SQLEnumerable |\n|last_or_default       |Return the last element match the predicate or None if none match.   |SQLEnumerable |\n|max                   |Return the max element.                                              |SQLEnumerable |\n|max                   |Aggregate function to get the max of predicate.                      |MDPA          |\n|min                   |Return the min element.                                              |SQLEnumerable |\n|min                   |Aggregate function to get the min of predicate.                      |MDPA          |\n|order_by              |Return the selection order by key(s).                                |SQLEnumerable |\n|order_by_descending   |Return the selection order by descending by key(s).                  |SQLEnumerable |\n|select                |Return a selection of elements.                                      |SQLEnumerable |\n|single                |Return the only element match the predicate.                         |SQLEnumerable |\n|single_or_default     |Return the only element match the predicate or None if many matches. |SQLEnumerable |\n|skip                  |Return the selection minus _X_ first elements.                       |SQLEnumerable |\n|skip_last             |Return the selection minus _X_ last elements.                        |SQLEnumerable |\n|sum                   |Aggregation function to get the sum of a predicate.                  |MDPA          |\n|take                  |Return _X_ first element of the selection.                           |SQLEnumerable |\n|take_last             |Return _X_ last element of the selection.                            |SQLEnumerable |\n|union                 |Return the union between 2 selections.                               |SQLEnumerable |\n|where                 |Return the selection with all elements match the predicate.          |SQLEnumerable |\n<!-- markdownlint-enable MD013 -->\n\nFor more information see the [detailed documentation](https://py-linq-sql.readthedocs.io/en/latest/api/sqle/sqlenumerable/).\n\n### Custom functions\n\n<!-- markdownlint-disable MD013 -->\n|Method Name   |Description                                         |Output                            |\n|:-------------|:---------------------------------------------------|:---------------------------------|\n|delete        |Delete data in a SQL table.                         |SQLEnumerable                     |\n|execute       |Execute a request from an SQLEnumerable.            |Enumerable or int or bool or dict |\n|insert        |Insert data in a SQL table.                         |SQLEnumerable                     |\n|simple_insert |Insert data in a relationnal SQL table with kwargs. |SQLEnumerable                     |\n|update        |Update data in a table.                             |SQLEnumerable                     |\n<!-- markdownlint-enable MD013 -->\n\n## Not implemented functions\n\n### LINQ functions\n\n|Method Name      |Description     |\n|:----------------|:---------------|\n|append           |Not implemented |\n|default_if_empty |Not implemented |\n|empty            |Not implemented |\n|prepend          |Not implemented |\n|range            |Not implemented |\n|repeat           |Not implemented |\n|reverse          |Not implemented |\n|select_many      |Not implemented |\n|skip_while       |Not implemented |\n|take_while       |Not implemented |\n|to_dictionary    |Not implemented |\n|to_list          |Not implemented |\n|zip              |Not implemented |\n\n### Py-Linq functions\n\n|Method Name|Description     |\n|:----------|:---------------|\n|add        |Not implemented |\n|median     |Not implemented |\n\n[Py-Linq link](https://viralogic.github.io/py-enumerable)\n\n## Contributing and info for developers\n\n- [Changelog](CHANGELOG.md)\n- [Contributing](CONTRIBUTING.md)\n- [Our git workflow](https://py-linq-sql.readthedocs.io/en/latest/workflow/)\n\n## Full documentation\n\n- [Py-LINQ-SQL Documentation](https://py-linq-sql.readthedocs.io/en/latest/)\n",
    "bugtrack_url": null,
    "license": "EUPL v1.2",
    "summary": "A Python module used for interacting with sql database using LINQ syntax.",
    "version": "1.9.10.1",
    "project_urls": {
        "Documentation": "https://py-linq-sql.readthedocs.io/en/latest/",
        "Homepage": "https://gitlab.obspm.fr/exoplanet/py-linq-sql",
        "Repository": "https://gitlab.obspm.fr/exoplanet/py-linq-sql"
    },
    "split_keywords": [
        "linq",
        "py-linq",
        "sql",
        "database",
        "requests"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75581790ccbdb2628da0b8f1e970b214d062c2c0abe57678a42a90cc1b81c42e",
                "md5": "c5b73c2d9b9d80f378f429d75095b60d",
                "sha256": "932f47618c81726b4bf92a1a8cd779543d5b2cf34a492c9a6cc3328a282b8552"
            },
            "downloads": -1,
            "filename": "py_linq_sql-1.9.10.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "c5b73c2d9b9d80f378f429d75095b60d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0.0",
            "size": 63540,
            "upload_time": "2023-12-15T16:15:19",
            "upload_time_iso_8601": "2023-12-15T16:15:19.643133Z",
            "url": "https://files.pythonhosted.org/packages/75/58/1790ccbdb2628da0b8f1e970b214d062c2c0abe57678a42a90cc1b81c42e/py_linq_sql-1.9.10.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fd4344188abb655da786827b78100c37972c7faf3d7b42ef1d2903956ca73649",
                "md5": "ea6950500f28f299d39539c84d53e3b0",
                "sha256": "a0142c8d95c92acae33995606104379372c5a461e8840a64f4798854f752e2db"
            },
            "downloads": -1,
            "filename": "py_linq_sql-1.9.10.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ea6950500f28f299d39539c84d53e3b0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0.0",
            "size": 55691,
            "upload_time": "2023-12-15T16:15:21",
            "upload_time_iso_8601": "2023-12-15T16:15:21.753805Z",
            "url": "https://files.pythonhosted.org/packages/fd/43/44188abb655da786827b78100c37972c7faf3d7b42ef1d2903956ca73649/py_linq_sql-1.9.10.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-15 16:15:21",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "py-linq-sql"
}
        
Elapsed time: 0.15756s