Estoy tratando de ejecutar manualmente comandos SQL para poder acceder a los procedimientos en NuoDB.
Estoy usando Ruby on Rails y estoy usando el siguiente comando:
ActiveRecord::Base.connection.execute("SQL query")
La "consulta SQL" podría ser cualquier comando SQL.
Por ejemplo, tengo una tabla llamada "Comentarios" y cuando ejecuto el comando:
ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")
Esto solo devolvería una respuesta "verdadera" en lugar de enviarme todos los datos solicitados.
Esta es la salida en la consola de Rails es:
SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks`
=> true
Me gustaría usar esto para llamar a procedimientos almacenados en NuoDB pero al llamar a los procedimientos, esto también devolvería una respuesta "verdadera".
¿Hay alguna forma de ejecutar comandos SQL y obtener los datos solicitados en lugar de obtener una respuesta "verdadera"?
fuente
ActiveRecord::Base.connection.execute
. ¿Podría indicar qué cambió exactamente para obtener los datos en lugar de solotrue
?Para mí, no pude obtener esto para devolver un hash.
Pero usar el método exec_query funcionó.
fuente
.exec_query
devuelve unActiveRecord::Result
objeto que es muy útil con fácil acceso.columns
y.rows
atributos..execute
devuelve una serie de hashes que generalmente es más problemático de manejar y probablemente más pesado en la memoria. Nunca lo había usadoexec_query
, gracias por el dato..entries
cuando lo use.exec_query
para obtener los resultados como una matriz de hashes.Reposicionando la respuesta de nuestro foro para ayudar a otros con un problema similar:
fuente
El código anterior es un ejemplo para
fuente
ActiveRecord::Base.connection
sin llamarActiveRecord::Base.clear_active_connections!
. Ver api.rubyonrails.org/v5.2/classes/ActiveRecord/...