问题标签 [sequel-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
101 浏览

ruby - Sequel + ADO + Puma 不是线程查询

我们有一个网站在 Windows Server 2008 + SQLServer 2008 + Ruby + Sinatra + Sequel/Puma 上运行

我们为我们的网站开发了一个 API。当多个客户端同时请求接入点时,客户端开始收到 RequestTimeout 异常。

我调查了一下,我注意到 Puma 管理多线程很好。但是 Sequel(或 Sequel 之下的任何层)一次只处理一个查询,即使它们来自不同的客户端。

事实上,如果我启动许多 Web 服务器,每台服务器都侦听一个不同的端口,并且我为每个客户端分配一个不同的端口,则不会发生 RequestTimeout 异常。

我还不知道问题是 Sequel、ADO、ODBC、Windows、SQLServer 还是什么。 事实是我无法切换到任何其他技术(如 TinyTDS)

Bellow 是一小段带有屏幕截图的代码,您可以使用它来复制错误:

上面的代码中有 2 个接入点:

  1. delaybyquery.json,通过加入同一个表 5 次来产生延迟。请注意,该表必须有大约 1000 行才能使查询工作非常缓慢;和

  2. delaybycode.json,仅通过调用 ruby​​ sleep 函数来产生延迟。

两个接入点都接收到一个 tid(tracking-id)参数,并且都在 CMD 中写入 outout,因此您可以在同一窗口中跟踪两个进程的活动,并检查哪个接入点正在阻止来自其他浏览器的传入请求。

为了测试,我在同一个 chrome 浏览器中打开了 2 个选项卡。以下是我正在执行的 2 个测试。

步骤#1:运行网络服务器

c:\source\pulqui>ruby example.app.rb -p 81 我得到下面的输出

第 2 步:按代码测试延迟

我调用了这个 URL:127.0.0.1:81/delaybycode.json?tid=123 5 秒后我调用了另一个 URL 127.0.0.1:81/delaybycode.json?tid=456 下面是输出,你可以在其中看到两个调用并行工作

单击此处查看屏幕截图

第 3 步:通过查询测试延迟

我调用了这个 URL:127.0.0.1:81/delaybyquery.json?tid=123 5 秒后我调用了另一个 URL 127.0.0.1:81/delaybyquery.json?tid=456 下面是输出,你可以在其中看到电话正在工作 1 时间。对访问点的每次调用都以查询超时异常结束。

单击此处查看屏幕截图

0 投票
1 回答
853 浏览

ruby - 如何在 Sequel 的 where 语句中使用 json 字段?

我有一张桌子transactions

其中请求可以包含以下数据: { plugin_id: string, item_src_id: string, item_dst_id: string, payload: {}}{ plugin_id: string, item_id: string, payload: {}}

我可以使用纯 SQL 为某些item_id类似的事务选择事务列表:

但是,当我将该请求与 Sequel 一起使用时,它会警告我

后续弃用警告:不推荐使用具有多个参数或第一个参数/元素是字符串的数组调用数据集过滤方法,并将在 Sequel 5 中删除。

对于该请求:

我可以Sequel.lit在 where 操作中使用该字符串,但我的问题是 -我可以使用本机 Sequel 运算符在字段内选择 json吗?

这对我有用:

0 投票
1 回答
157 浏览

ruby - 使用用户名和密码将 gem 复制到另一个数据库

复制另一种用途是使用

有没有办法包含两个数据库的用户名和密码。没有运气尝试

0 投票
1 回答
375 浏览

arrays - 枚举的 Sequel 和 Postgres 数组

我有enum_cars

我有列表userown_cars: enum_cars[]

例如,当我获取用户模型和获取own_cars字段时,我有:

我连接了

DB.extension :pg_array

Sequel.extension :pg_array

但这对我不起作用。我应该怎么做才能获取字段Array?或者枚举数组是不可能的?

0 投票
0 回答
151 浏览

ruby - Sequel gem - “致命:剩余的连接槽保留用于非复制超级用户连接”

通过谷歌搜索,我知道这个错误似乎是由于连接没有正确关闭。但是,Sequel gem 自述文件所说的使用数据库的方式是使用打开连接@db = Sequel.connect('postgres://someaddress'),然后调用各种命令。我读过一些人提到使用代码块进行连接,但这是否意味着我只需要在整个程序周围放置一个代码块?如果某处出现错误,连接是否仍会卡在打开状态?

我试过这样启用连接验证器插件:

但我仍然遇到同样的问题。

有什么想法吗?

0 投票
1 回答
29 浏览

ruby-on-rails - 续集模型属性(db 列)的 instance.attribute_name 和 instance[:attribute_name] 是否完全相同?

我使用 Rails 5.1.4、Sequel 5.9.0、Postgre、rack-mini-profiler(最新)、sequel-rails 1.0.1。

我试图弄清楚为什么我的应用程序很慢。这是我发现的。

我做了一个简单的查询来获取帖子使用

并得到〜150。

我有一部分要渲染它。这是简化的:

当我查看 rack-mini-profiler 的日志时,我看到了

请求减慢渲染,但如果我将.方法更改为:[]

查询消失,NULL渲染变得更快。(两者都是我数据库titlebody的字段,仅此而已。)

为什么?这是我需要知道的关于续集的事情吗?在那种情况下我不应该instance.method在未来使用,或者我错过了什么?

当我尝试来自控制台的请求时,我得到了:

第一个幻像请求是什么?如何调试和删除它?

0 投票
1 回答
185 浏览

ruby - 续集:如何将变量传递给选择块?

我需要计算选择查询中的用户数。这是我的 SQL 片段

我在里面使用它

这是我在 Sequel 上的实现,它有效

但我需要使用这样的东西

我需要在查询中使用schemayear变量,但续集说我

或者如果我直接将年份 ID 作为字符串传递,它会schema以错误的方式替换变量

简化用例

在这种情况下,有什么方法可以将变量传递给 select 块?

0 投票
1 回答
211 浏览

sql-server - 为什么 SQL 开发人员 ID 列返回我 BigDecimal 而不是简单整数?

我正在使用 sequel gem 来读取 SQL Server 数据库表。

在此之前,我使用 Oracle SQL developer 连接到 SQL server 数据库,id 列显示 1、2、3、4、5...

表定义在 SQL Developer 中如下所示: 在此处输入图像描述

但是当我使用 sequel gem 读取 Ruby 中的表格时,该 ID 列是 BigDecimal 并显示类似于 0.1e1 的内容。为什么是这样?如果这是一个 ID,它不应该总是整数吗?

我应该如何使用这个领域?我应该调用 to_i 将其转换为整数吗?

0 投票
1 回答
45 浏览

ruby - Ruby Sequel Gem 无法查找具有不同所有者的表

我正在使用 odbc 适配器通过 Sequel Gem 连接到我公司的数据库。

DB = Sequel.odbc('myserver', :user => "USER1", :password => "1234")

我连接得很好,但我无法从属于其他用户的表中获取数据集。

当我使用 Interactive SQL 连接到数据库时,我看到了下表。

在交互式 SQL 中时。因为 user1 是超级用户,所以我完全有权对所有表执行任何操作。但是,当我尝试使用 Sequel gem 拉 table4 或 table5 时。

dataset = DB[:TABLE4].all.count

我收到以下错误。

但是,当使用相同的代码拉 TABLE1 时,2 或 3 就可以了。

dataset = DB[:TABLE1].all.count

=>999

也许是因为我没有正确查找表 4 或表 5?或者我必须以某种方式指定这些表的所有者?在 Interactive SQL 中,我必须执行 USER2.TABLE4 来识别表。

非常感谢!