Базы данных в ATcl

Базы данных в ATcl

24 января 2023, 14:24
Maxim Kuznetsov
0
52

Вместе с ATcl вы получаете интерфейсы ко множеству СУБД и вы можете не ограничивать свой выбор. В статье даётся краткий перечень доступных реляционных баз

SQLite

Начать обзор конечно стоит со знакомого всем SQLite. Конечно-же он есть. Он тут встроенный. Более того, Tcl и SQLite «дружат домами» - одни и те-же разработчики, совместные конференции, tcl активно используется в проекте SQLite и наоборот. Это гарантирует, что вcтроенный драйвер SQLite получше будет чем у MetaTrader. Детальная документация по использованию прямо на оф.сайте SQLite: https://www.sqlite.org/tclsqlite.html

Postgres, MySql

Доступ к реляционным базам осуществляется через унифицированный интерфейс TDBC, документация вот : https://www.tcl-lang.org/man/tcl/TdbcCmd/contents.htm И там конечно-же предоставлены интерфейсы к наиболее популярным СУБД MySQL (tdbc::mysql) и PostgreSQL (tdbc::postrgres);

Использовать достаточно просто:

# требуется пакет postgres
package require tdbc::postgres
# параметры соединения (для удобства - отдельной строкой)
set conninfo {-host dbserver.domain.org -database funnydb -user max -password verySecret}
# соединяемся, db - имя для дескриптора
tdbc::postgres::connection create db {*}$conninfo
# делаем запросы
set name "O'Hara"
db foreach rec { SELECT firstname FROM customers WHERE surname = :name } {
    # rec - словарь, список пар имя_колонки её_значение
    # можно целиком напечатать
    puts $rec
    # или брать отдельные поля
    puts "Found \"[dict get $rec firstname]\" in the customers table"
}

ODBC: Access, Excell, MSSQL, Firebird etc

Так как работаем в Windows, то предоставляется интерфейс к Windows ODBC, а там море разных драйверов. Можно использовать MSSQL, Excel, Access и вообще любый у которых есть odbc-драйвер

package require tdbc::odbc
# поработаем например с Excel
# единственный нюанс odbc - в документации конкретного драйвера надо смотреть опции соединения
set connStr "DRIVER={Microsoft Excel Driver (*.xls)};FIL={MS Excel};DBQ=test.xls;pagetimeout=5;readonly=false"
tdbc::odbc::connection create db $connStr
# так далее

Oracle

и конечно Oracle, куда-же без Oracle. пользуйтесь https://oratcl.sourceforge.net/

MonetDB

есть база с подходящим для нас названием MonetDB https://www.monetdb.org/ и очень приятной фичей column-oriented, ориентрирована на работы с большими объёмами данных по колонкам. Интерфейс и документация https://github.com/ray2501/tclmonetdb


SQL Relay

если вдруг, случайно, вам покажется мало возможностей, то есть SQLRelay https://sqlrelay.sourceforge.net/index.html который умеет транслировать запросы ко множеству разных SQL и поддерживает tcl интерфейс https://sqlrelay.sourceforge.net/documentation.html

Установить библиотеку ATcl можно через инсталлятор https://uploadfiles.in/3nf (копии на https://www.filefactory.com/file/6zj49q87vhkk/atclsetup.exe и https://dfiles.eu/files/z4smq9xxa )

или следуя инструкциям в репозитарии проекта https://chiselapp.com/user/nektomk/repository/atcl-lib/home

а также с эскизного сайта http://atcl.unaux.com/download/

Читайте также предыдущие статьи:


Поделитесь с друзьями: