Как написать функцию, которая использует sqlite для подключения к базе данных и запроса данных в lisp

Я написал эту функцию:

(defun load-db (filename)
  (with-open-file (in filename)
    (with-standard-io-syntax
      (setf *db* (read in)))))

У меня есть локальная база данных с именем xx.db, я хочу использовать sqlite для ее подключения и что-то, что я могу запросить следующим образом:

(defvar *db* (connect "~/xx.db"))
(execute-single *db* "select ss_type from capitalization where lemma = ?" "A")

Как мне это сделать? Он не будет работать для вышеуказанного запроса, и я также уже включаю пакет SQLite и указываю путь к xx.db


person Yihong Theis    schedule 05.07.2018    source источник
comment
Пожалуйста, прочитайте эту статью, прежде чем задавать вопрос Как мне задать хороший вопрос?   -  person Hamed    schedule 05.07.2018


Ответы (1)


Какую библиотеку баз данных вы пробовали?

С помощью clsql вы можете сделать что-то вроде:

(ql:quickload "clsql")
(clsql:connect "xx" :database-type :sqlite)
(clsql:execute-command "from ...")

Другие библиотеки БД: https://github.com/CodyReichert/awesome-cl#database

person Ehvince    schedule 06.07.2018
comment
Я использовал wordnet, но у меня есть файл wordnet.db в моем локальном компьютере. Мне нужно открыть файл или открыть базу данных, как я могу вставить свой запрос? - person Yihong Theis; 07.07.2018
comment
Word net представляет собой набор файлов, которые необходимо импортировать в sql. Кажется, существует ряд проектов github, которые имеют дело с wordnet, этот github.com/TheDarkTrumpet/cl-wordnet утверждает, что является интерфейсом cl для sql wordnet.. если вы снова зададите вопрос, предоставьте больше контекста, чтобы мы поняли что вы спрашиваете - person David Hodge; 08.07.2018
comment
У меня есть файлы базы данных wordnet, которые хранятся в wordnet.db в другом каталоге, я хочу написать функции, которые могут подключить мою базу данных wordnet.db в cl sqlite, а затем запросить две таблицы. Я пытаюсь писать функции в аквамаках. - person Yihong Theis; 09.07.2018
comment
Я думаю, прежде всего нужно убедиться, что wordnet.db действительно является базой данных sqlite — вы можете использовать sqlitebrowser.org чтобы убедиться, что это действительно база данных sqllite и что sqlite установлен правильно. Если это работает, то clsql — это очень простой способ подключиться к нему из lisp. - person David Hodge; 10.07.2018