如何在Typed Racket中连接数据库?

时间:2017-06-11 09:28:17

标签: racket typed-racket

根据official docs,通过

连接postgresql非常方便
(require db)
(define pgc
  (postgresql-connect #:user "example"
                      #:database "exampledb"
                      #:password "password"))

但是,这在Typed Racket中没有用(我有(require typed/db)):

  

postgresql-connect:模块中的未绑定标识符:   的PostgreSQL-连接

1 个答案:

答案 0 :(得分:3)

正确...事实证明typed / db仅用于sqlite3。以下是一些适合我的代码示例:

#lang typed/racket

(require/typed
 db
 [#:opaque Connection connection?]
 [postgresql-connect
  (#:port Number #:user String #:database String #:password String
   -> Connection)]
 [query-rows
  (Connection String Any * -> (Listof (Vectorof Any)))]
 [query-list
  (Connection String Any * -> (Listof Any))])

(define conn
    (postgresql-connect #:port 13432
                        #:user db-username
                        #:database "scheduling"
                        #:password db-password))
(define rows
  (query-rows
   conn
   (~a "SELECT * FROM course_mappings")))

请注意,我仅为我想要使用的功能提供了类型。要使用例如query-exec,您需要为其提供单独的类型。