gpt4 book ai didi

mysql - 如何将 MySQL 语句转换为数值?

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:37 25 4
gpt4 key购买 nike

我正在从外部数据库中获取数据,并将其提供给我的 dashing 小部件。

当数值数据返回到小部件时,它看起来像:

mysql::result:0x21A25

我需要此数据为十进制数。以下是获取数据并将其提供给小部件的代码:

require 'mysql2'

SCHEDULER.every '1m', :first_in => 0 do |job|

# Mysql connection

db = Mysql2::Client.new(:host => "some ip", :username => "user", :password => "password", :port => 3306, :database => "database_name" )

# Mysql query

sql = "SELECT COUNT(*) FROM out_sms WHERE type = 'STANDARD_SMS' "
# Execute the query
results = db.query(sql)


# Update the Man Hours Saved E widget

send_event('manHoursE', { current: results } )

end

最佳答案

Mysql2::Client#query 方法将返回一个 Mysql2::Result 对象,它是一个 Ruby Enumerable。这意味着您可以像使用数组或散列(例如 results.each {})或 use Enumerable methods 一样,通过许多不同的方式对其进行迭代。就像 .first.last 一样。

没有 GROUP BY 的查询只能返回一行。所以调用 .first 会给你那一行。

# Use an alias for the count, total here
sql = "SELECT COUNT(*) AS total FROM out_sms WHERE type = 'STANDARD_SMS' "
# Execute the query
results = db.query(sql)

# Then retrieve the row using a method like .first
your_row = results.first

# Look at the hash it contains:
puts your_row

# The value you want should be a hash key
puts your_row['total']

然后您可以在更新方法中使用 your_row['total']

当然,您可以将其全部简化,只使用 results.first['total']。不要忘记将其包装在适当的 begin ... rescue ... end 中以处理错误。

关于mysql - 如何将 MySQL 语句转换为数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com