Slick-pg

Slick 的 PostgreSQL 扩展
授权协议 BSD
开发语言 Scala
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 国产
投 递 者 羊舌墨一
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Slick-pg 是一些针对 PostgreSQL 的 Slick 扩展,用于支持 PostgreSQL 的(特有)类型及/或相关函数。如果你对使用 Slick 来开发基于 PostgreSQL 的程序感兴趣,那么你会发现 slick-pg 非常有用。

有了它,我们就可以在 Scala/Slick 项目里自由的使用那些 PostgreSQL 特有的、因而 Slick 肯定不会内置支持的那些数据类型及其操作/函数来构造 SQL 查询了:

import MyPostgresDriver.simple._

class TestTable(tag: Tag) extends Table[Test](tag, Some("xxx"), "Test") {
  def id = column[Long]("id", O.AutoInc, O.PrimaryKey)
  def during = column[Range[Timestamp]]("during")
  def location = column[Point]("location")
  def text = column[String]("text", O.DBType("varchar(4000)"))
  def props = column[Map[String,String]]("props_hstore")
  def tags = column[List[String]]("tags_arr")

  def * = (id, during, location, text, props, tags) <> (Test.tupled, Test.unapply)
}

object tests extends TableQuery(new TestTable(_)) {
  ///
  def byId(ids: Long*) = tests.filter(_.id inSetBind ids).map(t => t)
  // will generate sql like: select * from test where tags && ?
  def byTag(tags: String*) = tests.filter(_.tags @& tags.toList.bind).map(t => t)
  // will generate sql like: select * from test where during && ?
  def byTsRange(tsRange: Range[Timestamp]) = tests.filter(_.during @& tsRange.bind).map(t => t)
  // will generate sql like: select * from test where case(props -> ? as [T]) == ?
  def byProperty[T](key: String, value: T) = tests.filter(_.props.>>[T](key.bind) === value.bind).map(t => t)
  // will generate sql like: select * from test where ST_DWithin(location, ?, ?)
  def byDistance(point: Point, distance: Int) = tests.filter(r => r.location.dWithin(point.bind, distance.bind)).map(t => t)
  // will generate sql like: 
  //   select id, text, ts_rank(to_tsvector(text), to_tsquery(?)) 
  //   from test 
  //   where to_tsvector(text) @@ to_tsquery(?) 
  //   order by ts_rank(to_tsvector(text), to_tsquery(?))
  def search(queryStr: String) = tests.filter(tsVector(_.text) @@ tsQuery(queryStr.bind))
		.map(r => (r.id, r.text, tsRank(tsVector(r.text), tsQuery(queryStr.bind))))
		.sortBy(_._3)
}

...


目前支持的 PostgreSQL 类型有:

  • ARRAY

  • JSON

  • Date/Time

  • Enum

  • Range

  • HStore

  • LTree

  • Inet/MacAddr

  • text Search

  • postgis Geometry


目前支持的 PostgreSQL 特性有:

  • inherits
  • Composite type (basic)
  • aggregate functions
  • window functions


  • 这个版本的更新主要是: 增加了对 json 的支持 (PostgreSQL 9.3 正式版已经发布了,所以我适时加入了对 pg json 的支持。功能其实前两个星期就已经开发测试好了,但公司跟联邦政府的那个项目太让人操心了,到现在才真正有点空闲的时间来更新整理。) -------------------------------------------------------------------

  • Slick-pg v0.6.5.2 发布了,相比 0.6.3 主要更新有: - 增加了 pg LTree 的支持 - search 增强:更多操作符/方法;允许指定语言 - date2/threeten 插件:允许选择性的绑定 Duration/Period 到 pg Interval;微秒(microseconds)支持 - pg date/range/json 支持:允许一种 pg 类型同时绑

  • 1.需要的sbt依赖 "org.scalatestplus.play" %% "scalatestplus-play" % "3.0.0" % Test, "mysql" % "mysql-connector-java" % "5.1.47", "com.typesafe.play" %% "play-slick" % "3.0.0", "com.typesafe.

  • 以postgresql为例,使用slick orm工具进行scala数据库操作 建立build.sbt name := "Simple Project" version := "1.0" scalaVersion := "2.10.3" libraryDependencies ++= List(   "com.typesafe.slick" %% "slick" % "2.0.2-RC1",  

 相关资料
  • SlickSlick是MooTools的选择器引擎。它支持多种CSS2/CSS3选择器! Reverse Combinators逆向选则器. 示例: document.getElement('p ! div') //一个<div>,并这个<div>是<p>的祖先 document.getElement('p !> div') // 一个<div>,并这个<div>是<p>的直接父类(中间

  • Slick 是一个独立的 CSS Selector 引擎,示例代码: Slick.find(document, "#foo > bar.baz") → <bar> Slick.find(node, "#does-not-exist") → null

  • 问题内容: 有谁知道如何在PostgreSQL中扩展频率表? 例如,变换表x: 进入 设置代码: 问题答案: 这非常简单:

  • 我正在学习如何使用Scala和Play 2 Framemork构建应用程序。我使用activator工具创建了一个新项目,它基于当前的“play scala intro”模板。 该模板有一个使用Play-Slick 1.0管理依赖项的示例应用程序,并配置了一个H2 DB,可以正常工作。 当我尝试更改为Postgres DB时,我遇到了麻烦。我得到一个错误500,告诉我: “无法连接到数据库[默认设

  • Slick 是 TypeSafe 推出的 Scala 数据库访问库。开发者可以使用 Scala 语言风格来编写数据查询,而不是用 SQL,示例代码: object Coffees extends Table[(String, Int, Double)]("COFFEES") { def name = column[String]("COF_NAME", O.PrimaryKey) def su

  • slick 是一个基于 jQuery 的幻灯片插件,具有以下特点: 支持响应式 浏览器支持 CSS3 时,则使用 CSS3 过度/动画 支持移动设备滑动 支持桌面浏览器鼠标拖动 支持循环 支持左右控制 支持动态添加、删除、过滤 支持自动播放、圆点、箭头、回调等等 查看演示