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 la ruta de retirada. Se recomienda encarecidamente actualizar al servidor flexible de Azure Database for MySQL. Para más información sobre la migración al servidor flexible de Azure Database for MySQL, consulte ¿Qué ocurre con Azure Database for MySQL con servidor único?

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:

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.

  1. Descargue e instale la versión 2.3 de Ruby.
  2. Inicie un nuevo símbolo del sistema (cmd) desde el menú Inicio.
  3. Cambie el directorio al directorio de Ruby para la versión 2.3. cd c:\Ruby23-x64\bin
  4. Para probar la instalación de Ruby, ejecute el comando ruby -v para ver la versión instalada.
  5. Para probar la instalación de Gem, ejecute el comando gem -v para ver la versión instalada.
  6. 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.

  1. Inicie sesión en Azure Portal.
  2. En el menú izquierdo de Azure Portal, haga clic en Todos los recursos y, luego, busque el servidor que ha creado, por ejemplo, mydemoserver.
  3. Haga clic en el nombre del servidor.
  4. 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. Azure Database for MySQL server name

Ejecución del código Ruby

  1. 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).
  2. 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.
  3. A continuación, escriba el comando Ruby seguido del nombre de archivo, por ejemplo, ruby createtable.rb para ejecutar la aplicación.
  4. 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

Pasos siguientes