Skip to main content

A Shield for your LLM generated SQL Queries. It provides an application level control for securing the database from SQL generated by LLM.

Project description

LLM SQL Shield

A shield for your database to neutralize the SQL queries generated by Large Language Models (LLM).

Background

Large Language Models (LLM) have proven to be extraordinarily effective in generating SQL queries, revolutionizing SQL generation using large language models.

However, there is a significant challenge: a threat to the database. The queries generated by LLMs can access data that they aren't supposed to. No matter how constrained the prompt is, it is always possible to jailbreak. Given the nature of LLMs, they can never be controlled deterministically.

Securing the database is difficult because:

  1. Databases are usually controlled and managed by a different team. Therefore, any changes to the databases would take time.
  2. Databases are usually accessed and modified by multiple different services. Therefore, making any change to the database is difficult.
  3. Database security is designed for a handful of roles and users. Achieving security for thousands of users is difficult.
  4. Row-based security can be achieved by predefined views, but if we have to have dynamic views or parameterized views, it is not possible in databases as of now.
  5. LLMs require the table names and column names to be self-explanatory. To achieve the same in a database, you will have to clone the database and make modifications to it, but then making the data sync in these tables becomes a difficult task.

LLM SQL Shield - Features

With SQL Shield, you can:

  1. Limit the tables that you expose to LLM.
  2. Rename the tables as per your wish by setting proper pub_name.
  3. Limit the columns from each table.
  4. Rename the columns to make them more meaningful by setting proper pub_name.
  5. Limit the rows that can be accessed by providing filters.
  6. The filters can have variables that you can fill in at the time of query generation and execution.

Getting started or How does it work?

Install

It is available as the pip package. You can simply install it like this:

pip install sqlshield

Prepare the Schema

Once installed, you can import the following:

# Models contain the models for Table, Column, and Database.
from sqlshield.models import *

# The main work of handling and generating SQL is done by this
# The entry point is Session object.
from sqlshield.shield import *

The basic idea is that you create a pseudo-schema of your database keeping track of the original table name and column names. You expose this pseudo-schema to LLM to generate a query and then translate this query to internal tables.

Further, in the pseudo-schema, you create the row filters or parameterized views that basically filter rows per user.

The first step is to create the schema. Either you can create a schema by creating instances of MDatabase, MTable, and MColumn or you can simply instantiate by loading existing tables from your database using SQLAlchemy. I would recommend the second approach because it is easier and more maintainable - think of the new tables being introduced.

Let's go ahead and load the database objects using SQLAlchemy.

pip install sqlalchemy
# Using SQLAlchemy 
import sqlalchemy
from sqlalchemy import inspect
from sqlalchemy import text

engine = sqlalchemy.create_engine('sqlite:///chinook.db')
inspector = inspect(engine)

Now, using the inspector, you can create the SQL Shield's models: MTable, MColumn, and MDatabase automatically.

mDb = MDatabase.from_inspector(inspector)

Once you have the MDatabase instance ready, you can start modifying it to ensure that only minimal information is exposed to the LLMs.

The following code removes all the tables except for four tables. This also reduces the prompt size.

mDb.keep_only_tables(set(['Customer', 'Employee', 'Invoice', 'InvoiceLine']))

MDatabase.keep_only_tables is a handy utility method. To suit your business needs, you directly modify the MDatabase.tables object, which is a set().

If you want to modify each table, you can access the table directly from MDatabase.tables set() object. Since it is easier to create a dictionary and then access it, we have provided get_table_dict() as shown in the below code:

# It is a handy method to get the tables as a dictionary.
# Please use the MDatabase.tables
tables = mDb.get_table_dict()

Now, say we want to modify a table with the name Customer. We can change its name to Customers. Quite often the table names in your organization could be really messy and LLMs would not be able to generate good queries on this. You can give a good pub_name to each table. pub_name is what is shown to the LLM.

customer_table = tables['Customer']
# Change Name of table
customer_table.pub_name = 'Customers'

Filters are the most powerful feature of SQL Shield. Filters let you create subspaces for users. Using filters, you can limit the rows shown to the user. Say, there is a table that contains the data for all 500 teams in your organization. You want each team to see only their data. So you would create a filter now and at runtime, you would insert the team as part of parameters.

Here in this example, we want users to access only the rows of the Customers table that belong to their company.

# Add a filter
customer_table.filters = 'where company = {company}'

You can access the columns of an MTable using the columns which is a set(). It also provides a handy method drop_columns. I will be adding more handy methods based on the user's requests.

But you can simply access all columns from the set and modify it. Each column is MColumn, it has an important field pub_name. If you want to modify the name of a column that is visible to an LLM, just change pub_name. Don't change name.

# Drop some columns
customer_table.drop_columns(set(['Address']))

That's it. Your database is ready!

Generate Schema for LLM

With this MDatabase mDb prepared in previous steps, we can generate schema to augment the prompt as follows:

schema_generated = mDb.generate_schema()

We can send this schema along with the question in the prompt to any LLMs and once LLMs generate SQL, we can re-write the SQL. Say, an LLM has generated a query aSql.

We can now, generate the safe query using the aSQL as follows:

d = {'company':'\'Telus\''}
sess = Session(mDb, d)
gSQL = sess.generateNativeSQL(aSql)

That's it. gSQL would have a query that is safe. Please note that we created a dictionary of parameters and passed it to the constructor of Session because we had parameterized filters that would limit the rows to the company = Talus.

Now, you can execute the gSQL on your actual database peacefully.

Complete Example with Open AI

Here is an example:

import sqlalchemy
from sqlalchemy import inspect
from sqlalchemy import text

from sqlshield.models import *
from sqlshield.shield import *
import os

# TODO: Specify correct OpenAI key
os.environ["OPENAI_API_KEY"] = 'sk-XXXXXXXXX'

# TODO: You can download this SQLite3 DB file: https://github.com/terno-ai/llm-sql-shield/raw/main/tests/chinook.db
# And save it in your current directory
# Connect to DB
engine = sqlalchemy.create_engine('sqlite:///chinook.db')
inspector = inspect(engine)

# Load default DB
mDb = MDatabase.from_inspector(inspector)

mDb.keep_only_tables(set(['Customer', 'Employee', 'Invoice', 'InvoiceLine']))

tables = mDb.get_table_dict()
customer_table = tables['Customer']

# Change Name of table
customer_table.pub_name = 'Customers'

# Add a filter
customer_table.filters = 'where company = {company}'

# Drop some colums
customer_table.drop_columns(set(['Address']))

# Column renaming

question = "Show me all customers."

from openai import OpenAI
client = OpenAI()

schema_generated = mDb.generate_schema()
print('The following schema was generated: ', schema_generated)

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are an SQL Analyst. Your role is to generate the SQL given a question. Only generate SQL nothing else."},
        {"role": "user", "content": question},
        {"role": "assistant", "content": "The tables schema is follows: " + schema_generated},
    ]
)

aSql = response.choices[0].message.content
print('SQL Generated by LLM: ', aSql)

d = {'company':'\'Telus\''}
sess = Session(mDb, d)
gSQL = sess.generateNativeSQL(aSql)
print("Native SQL: ", gSQL)

print(" ===================== ")
with engine.connect() as con:
    rs = con.execute(text(gSQL))
    for row in rs:
        print(row)

Testing

Comment out ext_modules and cmdclass from setup.py first

pip install -e .

Usage

import sqlshield
shield = sqlshield.SQLShield(...)

from sqlshield import SQLShield
shield = SQLShield(...)

Run inside tests directory

coverage run test.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sqlshield-0.0.15-cp312-cp312-win_amd64.whl (88.9 kB view details)

Uploaded CPython 3.12Windows x86-64

sqlshield-0.0.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (544.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

sqlshield-0.0.15-cp312-cp312-macosx_10_13_universal2.whl (179.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

sqlshield-0.0.15-cp311-cp311-win_amd64.whl (89.4 kB view details)

Uploaded CPython 3.11Windows x86-64

sqlshield-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (561.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

sqlshield-0.0.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (555.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

sqlshield-0.0.15-cp311-cp311-macosx_10_9_universal2.whl (179.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

sqlshield-0.0.15-cp310-cp310-win_amd64.whl (88.8 kB view details)

Uploaded CPython 3.10Windows x86-64

sqlshield-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (497.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

sqlshield-0.0.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (488.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

sqlshield-0.0.15-cp310-cp310-macosx_10_9_universal2.whl (179.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

sqlshield-0.0.15-cp39-cp39-win_amd64.whl (89.2 kB view details)

Uploaded CPython 3.9Windows x86-64

sqlshield-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (497.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

sqlshield-0.0.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (489.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

sqlshield-0.0.15-cp39-cp39-macosx_10_9_universal2.whl (180.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

sqlshield-0.0.15-cp38-cp38-win_amd64.whl (89.5 kB view details)

Uploaded CPython 3.8Windows x86-64

sqlshield-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (508.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

sqlshield-0.0.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (500.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

sqlshield-0.0.15-cp38-cp38-macosx_11_0_universal2.whl (181.2 kB view details)

Uploaded CPython 3.8macOS 11.0+ universal2 (ARM64, x86-64)

sqlshield-0.0.15-cp38-cp38-macosx_11_0_arm64.whl (93.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file sqlshield-0.0.15-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sqlshield-0.0.15-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 88.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sqlshield-0.0.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 712c730f05ecf063a36836917c43ab8b44110e0e2908863a0993f5b95573528e
MD5 b516c43dcda6ae2639f1d1e13f518520
BLAKE2b-256 d5fd7719c0ffa97cdafa4b74a9b000df93e42c598fbbc18edbc496f094305ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp312-cp312-win_amd64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 35cf53d6a584ac66d77525e6da00dd3b2d070a077b2142f78dca469409aa590c
MD5 26350a28e142aba09ed38b7da04ec76a
BLAKE2b-256 a0c3022e2ec75b262077a9c08ef12d0c52640d61912b01355f09db60db072987

See more details on using hashes here.

File details

Details for the file sqlshield-0.0.15-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b191d150eb511fcd82d8ad66e321248df66efa42b6022d9962ebd30fdb313ff4
MD5 ec187d565db5100ccd79f70cd8e11f0e
BLAKE2b-256 9f30ce7f2bfba8210250f56c57b9bf29c1499e663d8484cdae9564ffbf5e6420

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sqlshield-0.0.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 89.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sqlshield-0.0.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5a0b9543aca3cb74be996f4e59d4b4151b010127ecf2b00c50498b45aaa75d4f
MD5 9a2ce68fdc1356ee4a346d2f109e5cf0
BLAKE2b-256 fd4702f5c01f3da6f744395ceeac94acf62146b96923729ad536114ee28eeb7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp311-cp311-win_amd64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6463b12a7af86d9f61967439d6b613d9d1ced06a253a0f0382de38787c701967
MD5 77c89f8988aa29fb31248a73cd2cacf5
BLAKE2b-256 ae9a6de08ea2f0746baab309f4e57097137180c4f5947817ab371c20812a078e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2dd01fcdcf2547968de5b7f31c0729d3787171543c1284b3ba9f2b5c0543c15d
MD5 5316fdc28558b0c3665a36d545c34750
BLAKE2b-256 02986fd1078ca4e2c28e41174b6965bcf38e6d1360dc3924e0cc7228c46800ba

See more details on using hashes here.

File details

Details for the file sqlshield-0.0.15-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c56b90806ef732cf864c0a865e82b163034925e016e3d9fc43728410f86923a4
MD5 4c72d0fc31f3eff209a34865c82977f2
BLAKE2b-256 ad75847b1e6ae02e0940f96ccd0aebba21081c3ad54c560d2ed6fcd524457f33

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp311-cp311-macosx_10_9_universal2.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sqlshield-0.0.15-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 88.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sqlshield-0.0.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 de185e844733d87fd4070071312728ce238bd7aa7b55d5b0fda14bcba40c91e4
MD5 443aee1ea33ccc04d25967b2e2261d4f
BLAKE2b-256 ab03dacdcc183a2b334be81fe841204843d412b1a046127dcc3bbb4f1bf762d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp310-cp310-win_amd64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 213be692bd60db5d4fce8a48b12f6a05a19bf81ef35247ea0d6036b3a2c47f39
MD5 c65c5338a1aa48ec581392a700ec276c
BLAKE2b-256 161a922b6dc2de4ffa7456ebb187312754032393943eba5435f6c52d8a7d7423

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc12cd3eaba23f8689008d7e5543e2792c7805fb791465a3a2a3903a0507023f
MD5 a094433c4dcf971e6464d8504bc02b5e
BLAKE2b-256 553a172355a700fec7decf31695354799058525028432194ce78a45cb1858369

See more details on using hashes here.

File details

Details for the file sqlshield-0.0.15-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 de0725d6ffaab2f777bd2e574d20cd4e35cd040da0a91f66c34116266be16c4a
MD5 072d5bf3d36457fd2e36f41055fc4d9c
BLAKE2b-256 d8d809c9a94e91e15e02a41369477a35ea78a0d33ed22ed5ed5e3c1d945de47a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp310-cp310-macosx_10_9_universal2.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sqlshield-0.0.15-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 89.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sqlshield-0.0.15-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2c26e7c1ecacbe89f6c990908ba5cd80d3176765e7016a0032825b5db089d2e5
MD5 c4bef1999de1d88ea4f61a68b3aa084a
BLAKE2b-256 851c19afc7d70e2509a26ed60981ae94426c7573243167fb92a69e1edcc9db1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp39-cp39-win_amd64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30081e7e4897aafd14976482c13bba10aa2ed54b7280499523c1be3e2a389b2d
MD5 6f93e89a923584e3dcec9d2f23e52218
BLAKE2b-256 f1cad5765683bb3684c057688bb4bdf4d4a6889a1e7508ae50c1e04849a1d1f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5a9d2a14546f8be1f361ac61cf19fee861c184b6fa2329e99632ea226de97f90
MD5 eb3e3e72658832cc500f053aa4007529
BLAKE2b-256 5ffbe8ee533c9dfef4ceb6aa7c9d0d8b44c86edb9d35b253f3af2897928288ad

See more details on using hashes here.

File details

Details for the file sqlshield-0.0.15-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b56af9e353155cb7fce5ec3e385fb58e9927db0c0bbd4e44128e00b301127d77
MD5 c3a0d4a6fd98d022db8441addef4859a
BLAKE2b-256 84867c3960c3ca777f33b8198b4afe4c8a4c0f331d617cae739cfac2be71a5f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp39-cp39-macosx_10_9_universal2.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: sqlshield-0.0.15-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 89.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for sqlshield-0.0.15-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a4bded7c353b91f7a0bf753be86db3769ca318dc4b9a942ff277aa7faa52f56e
MD5 13ea83b00b3f29bd795c5322870a369c
BLAKE2b-256 2266d882afd7a0fff4d46f6af4f1e10721392de54d9ebc20c98ec93ff3ec6424

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp38-cp38-win_amd64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a63e9840cf8fce21428be75f531c80c5588264814fd28977d478552075da33fd
MD5 ca5f2202ba33eb3a2a783a4582f84000
BLAKE2b-256 ba45a6536f408008322794a84c67b972be9ab3cd3044ca9507b31a465c92e135

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e0bcead58d4a0099a427f7cfee1573d417483fd71edd7ea3439ceb092f71ac11
MD5 52394581f95dc2a1ab26f498de5311c1
BLAKE2b-256 aacdeeb5b2bcff7c0010be79575204ffb17e66ec470c9e3fc6541639ddfb42af

See more details on using hashes here.

File details

Details for the file sqlshield-0.0.15-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 7d12f32d5bdfb900f6208b0ca0c68860c8b4b484d2202ffd2e94b821f5d69f2b
MD5 7af80e6027f90e65a0feddc2d0be86e1
BLAKE2b-256 83e86767a8b609ff4959f5165eb88f0cf72e0a960890d35385e1f5b7c4bb172a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sqlshield-0.0.15-cp38-cp38-macosx_11_0_universal2.whl:

Publisher: build.yml on terno-ai/llm-sql-shield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sqlshield-0.0.15-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sqlshield-0.0.15-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4ded02773b838a86e9dc031b12d8b7a8fb44b64c12fe186d1fb2a43cbda9d2e
MD5 8e88b5347af26e53904dc9a96be6ee72
BLAKE2b-256 ff26bf5f6c0e1cf89220f1be7e24d69182f638960809413f937b1042bfa6a494

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page