Inicio rápido: Uso de Ruby para conectarse y consultar datos en Azure Database for MySQL
SE APLICA A: Azure Database for MySQL: Servidor único
Importante
El servidor único de Azure Database for MySQL está en proceso de retirada. Es muy recomendable actualizar al servidor flexible de Azure Database for MySQL. Para obtener más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué sucede con el servidor único de Azure Database for MySQL?
Este inicio rápido muestra cómo conectarse a una base de datos Azure para MySQL mediante una aplicación Ruby y la gema mysql2 desde plataformas Windows, Linux y Mac. Se indica cómo usar instrucciones SQL para consultar, insertar, actualizar y eliminar datos en la base de datos. En este artículo se da por hecho que está familiarizado con el desarrollo mediante Ruby, pero que nunca ha usado Azure Database for MySQL.
Prerrequisitos
En este tutorial rápido se usan como punto de partida los recursos creados en una de estas guías:
- Create an Azure Database for MySQL server using Azure Portal (Creación de un servidor de Azure Database for MySQL mediante Azure Portal)
- Create an Azure Database for MySQL server using Azure CLI (Creación de un servidor de Azure Database for MySQL mediante la CLI de Azure)
Importante
Asegúrese de que a la dirección IP desde la que se conecta se le han agregado las reglas de firewall del servidor desde Azure Portal o la CLI de Azure
Instalación de Ruby
Instale Ruby, Gem y la biblioteca MySQL2 en su propio equipo.
- Descargue e instale la versión 2.3 de Ruby.
- Inicie un nuevo símbolo del sistema (cmd) desde el menú Inicio.
- Cambie el directorio al directorio de Ruby para la versión 2.3.
cd c:\Ruby23-x64\bin
- Para probar la instalación de Ruby, ejecute el comando
ruby -v
para ver la versión instalada. - Para probar la instalación de Gem, ejecute el comando
gem -v
para ver la versión instalada. - Compile el módulo de mysql2 para Ruby mediante Gem; para ello, ejecute el comando
gem install mysql2
.
Obtención de información sobre la conexión
Obtenga la información de conexión necesaria para conectarse a Azure Database for MySQL. Necesitará el nombre completo del servidor y las credenciales de inicio de sesión.
- Inicie sesión en Azure Portal.
- En el menú izquierdo de Azure Portal, haga clic en Todos los recursos y, luego, busque el servidor que ha creado, por ejemplo, mydemoserver.
- Haga clic en el nombre del servidor.
- En el panel Información general del servidor, anote el nombre del servidor y el nombre de inicio de sesión del administrador del servidor. Si olvida la contraseña, puede restablecerla en este panel.
Ejecución del código Ruby
- Pegue el código de Ruby de las secciones siguientes en archivos de texto y, después, guarde los archivos en una carpeta de proyecto con la extensión .rb (como
C:\rubymysql\createtable.rb
o/home/username/rubymysql/createtable.rb
). - Para ejecutar el código, inicie el símbolo del sistema o el shell de Bash. Cambie el directorio a la carpeta de proyecto
cd rubymysql
. - A continuación, escriba el comando Ruby seguido del nombre de archivo, por ejemplo,
ruby createtable.rb
para ejecutar la aplicación. - En el sistema operativo Windows, si la aplicación Ruby no está en la variable de entorno path, puede que deba usar la ruta de acceso completa para iniciar la aplicación de Node, por ejemplo,
"c:\Ruby23-x64\bin\ruby.exe" createtable.rb
Conexión y creación de una tabla
Use el código siguiente para conectarse y crear una tabla mediante la instrucción SQL CREATE TABLE, seguida de las instrucciones SQL INSERT INTO para agregar filas a la tabla.
El código usa una clase mysql2::client para conectarse al servidor MySQL. A continuación, realiza una llamada al método query()
para ejecutar los comandos DROP, CREATE TABLE e INSERT INTO. A continuación, llama al método close()
para cerrar la conexión antes de terminar.
Reemplace host
, database
, username
y las cadenas password
por sus propios valores.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Drop previous table of same name if one exists
client.query('DROP TABLE IF EXISTS inventory;')
puts 'Finished dropping table (if existed).'
# Drop previous table of same name if one exists.
client.query('CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);')
puts 'Finished creating table.'
# Insert some data into table.
client.query("INSERT INTO inventory VALUES(1, 'banana', 150)")
client.query("INSERT INTO inventory VALUES(2, 'orange', 154)")
client.query("INSERT INTO inventory VALUES(3, 'apple', 100)")
puts 'Inserted 3 rows of data.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Lectura de datos
Use el código siguiente para conectarse y leer los datos mediante la instrucción SQL SELECT.
El código usa una clase mysql2::client para conectar con Azure Database for MySQL mediante un método new()
. A continuación, llama el método query()
para ejecutar los comandos SELECT. A continuación, llama al método close()
para cerrar la conexión antes de terminar.
Reemplace host
, database
, username
y las cadenas password
por sus propios valores.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Read data
resultSet = client.query('SELECT * from inventory;')
resultSet.each do |row|
puts 'Data row = (%s, %s, %s)' % [row['id'], row['name'], row['quantity']]
end
puts 'Read ' + resultSet.count.to_s + ' row(s).'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Actualización de datos
Use el código siguiente para conectarse y actualizar los datos mediante la instrucción SQL UPDATE.
El código usa un método .new() con la clase mysql2::client para conectar con Azure Database for MySQL. A continuación, llama al método query()
para ejecutar los comandos UPDATE. A continuación, llama al método close()
para cerrar la conexión antes de terminar.
Reemplace host
, database
, username
y las cadenas password
por sus propios valores.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Update data
client.query('UPDATE inventory SET quantity = %d WHERE name = %s;' % [200, '\'banana\''])
puts 'Updated 1 row of data.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Eliminación de datos
Use el código siguiente para conectarse y leer los datos mediante la instrucción SQL DELETE.
El código usa una clase mysql2::client para conectarse al servidor MySQL, ejecutar el comando DELETE y, a continuación, cerrar la conexión con el servidor.
Reemplace host
, database
, username
y las cadenas password
por sus propios valores.
require 'mysql2'
begin
# Initialize connection variables.
host = String('mydemoserver.mysql.database.azure.com')
database = String('quickstartdb')
username = String('myadmin@mydemoserver')
password = String('yourpassword')
# Initialize connection object.
client = Mysql2::Client.new(:host => host, :username => username, :database => database, :password => password)
puts 'Successfully created connection to database.'
# Delete data
resultSet = client.query('DELETE FROM inventory WHERE name = %s;' % ['\'orange\''])
puts 'Deleted 1 row.'
# Error handling
rescue Exception => e
puts e.message
# Cleanup
ensure
client.close if client
puts 'Done.'
end
Limpieza de recursos
Para limpiar todos los recursos utilizados durante esta guía de inicio rápido, elimine el grupo de recursos con el siguiente comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes