Snabbstart: Använda Ruby för att ansluta och fråga efter data i Azure Database for MySQL

GÄLLER FÖR: Azure Database for MySQL – enskild server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

Den här snabbstarten visar hur du ansluter till en Azure Database for MySQL med hjälp av ett Ruby-program och mysql2-pärlan från Plattformarna Windows, Linux och Mac. Den visar hur du använder SQL-instruktioner för att fråga, infoga, uppdatera och ta bort data i databasen. Det här avsnittet förutsätter att du är van att utveckla i Ruby och att du saknar erfarenhet av Azure Database for MySQL.

Förutsättningar

I den här snabbstarten används de resurser som skapades i någon av följande guider som utgångspunkt:

Viktigt!

Kontrollera att IP-adressen som du ansluter från har lagts till serverns brandväggsregler med hjälp av Azure Portal eller Azure CLI

Installera Ruby

Installera Ruby, Gem och MySQL2-biblioteket på din egen dator.

  1. Hämta och installera den version 2.3 av Ruby.
  2. Starta en ny kommandotolk (cmd) från Start-menyn.
  3. Ändra katalog till katalogen Ruby för version 2.3. cd c:\Ruby23-x64\bin
  4. Kontrollera Ruby-installationen genom att köra kommandot ruby -v och se den installerade versionen.
  5. Kontrollera Gem-installationen genom att köra kommandot gem -v och se den installerade versionen.
  6. Skapa Mysql2-modulen för Ruby med Gem genom att köra kommandot gem install mysql2.

Hämta anslutningsinformation

Skaffa den information som du behöver för att ansluta till Azure Database för MySQL. Du behöver det fullständiga servernamnet och inloggningsuppgifter.

  1. Logga in på Azure-portalen.
  2. På den vänstra menyn i Azure Portal klickar du på Alla resurser. Sök sedan efter den server som du skapade (till exempel mydemoserver).
  3. Klicka på servernamnet.
  4. På serverpanelen Översikt antecknar du Servernamn och Inloggningsnamn för serveradministratören. Om du glömmer lösenordet kan du även återställa det på den här panelen.

Köra Ruby-kod

  1. Klistra in Ruby-koden nedan i textfiler och spara sedan filerna till en projektmapp med filtillägget .rb (till exempel C:\rubymysql\createtable.rb eller /home/username/rubymysql/createtable.rb).
  2. För att köra koden startar du kommandotolken eller bash-gränssnittet. Ändra katalog till din projektmapp, till exempel cd rubymysql
  3. Skriv Ruby-kommandot följt av filnamnet, till exempel ruby createtable.rb, för att köra programmet.
  4. I Windows, om Ruby-programmet inte finns på sökvägen för miljövariabeln, kan du behöva använda den fullständiga sökvägen för att starta nodprogrammet, till exempel "c:\Ruby23-x64\bin\ruby.exe" createtable.rb

Ansluta och skapa en tabell

Använd följande kod för att ansluta och skapa en tabell med hjälp av CREATE TABLE-SQL-instruktionen följt av INSERT INTO-SQL-instruktioner för att lägga till rader i tabellen.

Koden använder en mysql2::client-klass för att ansluta till MySQL-servern. Sedan anropas metoden query() för att köra kommandona DROP, CREATE TABLE och INSERT INTO. close() Anropa slutligen för att stänga anslutningen innan du avslutar.

Ersätt strängarna host, database, username och password med egna värden.

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

Läsa data

Använd följande kod för att ansluta och läsa data med en SELECT-SQL-instruktion.

Koden använder en mysql2::client-klass för att ansluta till Azure Database for MySQL med new()metoden . Sedan anropas metoden query() för att köra SELECT-kommandona. Sedan anropas metoden close() för att stänga anslutningen innan den avslutas.

Ersätt strängarna host, database, username och password med egna värden.

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

Uppdatera data

Använd följande kod för att ansluta och uppdatera data med en UPDATE-SQL-instruktion.

Koden använder en mysql2::client-klass .new() metod för att ansluta till Azure-databas för MySQL. Sedan anropas metoden query() för att köra UPDATE-kommandona. Sedan anropas metoden close() för att stänga anslutningen innan den avslutas.

Ersätt strängarna host, database, username och password med egna värden.

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

Ta bort data

Använd följande kod för att ansluta och läsa data med SQL-instruktionen DELETE.

Koden använder en mysql2::client-klass för att ansluta till MySQL-servern, köra KOMMANDOT DELETE och sedan stänga anslutningen till servern.

Ersätt strängarna host, database, username och password med egna värden.

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

Rensa resurser

Om du vill rensa alla resurser som används under den här snabbstarten tar du bort resursgruppen med följande kommando:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Nästa steg