1
0
Fork 0

Merging upstream version 1.14.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-09 17:57:29 +01:00
parent b87d920aaa
commit 51881c9ebd
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4 changed files with 27 additions and 8 deletions

View file

@ -1,3 +1,17 @@
## 1.14.4 - 2025-01-31
### Bug Fixes
* Fix the usage instructions in the `\llm` command.
## 1.14.3 - 2025-01-29
### Bug Fixes
* Fix [misleading "0 rows affected" status for CTEs](https://github.com/dbcli/litecli/issues/203)
by never displaying rows affected when the connector tells us -1
* Show an error message when `\llm "question"` is invoked without a database connection.
## 1.14.2 - 2025-01-26 ## 1.14.2 - 2025-01-26
### Bug Fixes ### Bug Fixes

View file

@ -444,7 +444,7 @@ class LiteCli(object):
if special.is_llm_command(text): if special.is_llm_command(text):
try: try:
start = time() start = time()
cur = self.sqlexecute.conn.cursor() cur = self.sqlexecute.conn and self.sqlexecute.conn.cursor()
context, sql = special.handle_llm(text, cur) context, sql = special.handle_llm(text, cur)
if context: if context:
click.echo(context) click.echo(context)

View file

@ -138,14 +138,14 @@ qwq
> \\llm models default llama3 > \\llm models default llama3
# Set api key (not required for local models) # Set api key (not required for local models)
> \\llm keys set openai sg-1234 > \\llm keys set openai
API key set for openai.
# Install a model plugin # Install a model plugin
> \\llm install llm-ollama > \\llm install llm-ollama
llm-ollama installed. llm-ollama installed.
# Models directory # Plugins directory
# https://llm.datasette.io/en/stable/plugins/directory.html # https://llm.datasette.io/en/stable/plugins/directory.html
""" """
@ -285,6 +285,8 @@ def is_llm_command(command) -> bool:
@export @export
def sql_using_llm(cur, question=None, verbose=False) -> Tuple[str, Optional[str]]: def sql_using_llm(cur, question=None, verbose=False) -> Tuple[str, Optional[str]]:
if cur is None:
raise RuntimeError("Connect to a datbase and try again.")
schema_query = """ schema_query = """
SELECT sql FROM sqlite_master SELECT sql FROM sqlite_master
WHERE sql IS NOT NULL WHERE sql IS NOT NULL

View file

@ -138,16 +138,19 @@ class SQLExecute(object):
# e.g. SELECT. # e.g. SELECT.
if cursor.description is not None: if cursor.description is not None:
headers = [x[0] for x in cursor.description] headers = [x[0] for x in cursor.description]
status = "{0} row{1} in set" status = "{count} row{s} in set"
cursor = list(cursor) cursor = list(cursor)
rowcount = len(cursor) rowcount = len(cursor)
else: else:
_logger.debug("No rows in result.") _logger.debug("No rows in result.")
status = "Query OK, {0} row{1} affected" if cursor.rowcount == -1:
rowcount = 0 if cursor.rowcount == -1 else cursor.rowcount status = "Query OK"
else:
status = "Query OK, {count} row{s} affected"
rowcount = cursor.rowcount
cursor = None cursor = None
status = status.format(rowcount, "" if rowcount == 1 else "s") status = status.format(count=rowcount, s="" if rowcount == 1 else "s")
return (title, cursor, headers, status) return (title, cursor, headers, status)