快速入门:使用 Ruby 连接到 Azure Database for MySQL 并查询其中的数据
适用于: Azure Database for MySQL 单一服务器
重要
Azure Database for MySQL 单一服务器即将停用。 强烈建议升级到 Azure Database for MySQL 灵活服务器。 有关如何迁移到 Azure Database for MySQL 灵活服务器的详细信息,请参阅 Azure Database for MySQL 单一服务器发生了什么情况?
本快速入门演示如何在 Windows、Linux 和 Mac 平台中使用 Ruby 应用程序和 mysql2 gem 连接到适用于 MySQL 的 Azure 数据库。 同时还介绍了如何使用 SQL 语句在数据库中查询、插入、更新和删除数据。 本主题假设你熟悉如何使用 Ruby 进行开发,但不太熟悉 Azure Database for MySQL 的用法。
先决条件
此快速入门使用以下任意指南中创建的资源作为起点:
安装 Ruby
在自己的计算机上安装 Ruby、Gem 和 MySQL2 库。
- 下载并安装 Ruby 版本 2.3。
- 从“开始”菜单启动新的命令提示符 (cmd)。
- 将目录切换到 Ruby 版本 2.3 所在的目录。
cd c:\Ruby23-x64\bin
- 运行
ruby -v
命令查看所安装的版本,以测试 Ruby 安装。 - 运行
gem -v
命令查看所安装的版本,以测试 Gem 安装。 - 运行命令
gem install mysql2
,使用 Gem 生成适用于 Ruby 的 Mysql2 模块。
获取连接信息
获取连接到 Azure Database for MySQL 所需的连接信息。 需要完全限定的服务器名称和登录凭据。
- 登录到 Azure 门户。
- 在 Azure 门户的左侧菜单中,单击“所有资源”,然后搜索已创建的服务器(例如 mydemoserver)。
- 单击服务器名称。
- 从服务器的“概览”面板中记下“服务器名称”和“服务器管理员登录名”。 如果忘记了密码,也可通过此面板来重置密码。
运行 Ruby 代码
- 将以下部分中的 Ruby 代码粘贴到文本文件,然后使用文件扩展名 .rb 将这些文件保存到项目文件夹中(例如
C:\rubymysql\createtable.rb
或/home/username/rubymysql/createtable.rb
)。 - 若要运行此代码,请启动命令提示符或 Bash shell。 将目录切换到项目文件夹
cd rubymysql
- 然后键入 Ruby 命令并后接文件名(例如
ruby createtable.rb
)以运行应用程序。 - 在 Windows OS 上,如果 Ruby 应用程序不在路径环境变量中,则可能需要使用完整路径来启动 Node 应用程序,例如
"c:\Ruby23-x64\bin\ruby.exe" createtable.rb
进行连接并创建表
使用以下代码进行连接,使用 CREATE TABLE SQL 语句创建表,然后使用 INSERT INTO SQL 语句将行添加到表中。
该代码使用 mysql2::client 类连接到 MySQL 服务器。 然后调用 query()
方法,以便运行 DROP、CREATE TABLE 和 INSERT INTO 命令。 最后,调用 close()
以在终止之前关闭连接。
将 host
、database
、username
和 password
字符串替换为你自己的值。
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
读取数据
使用以下代码进行连接,并使用 SELECT SQL 语句读取数据。
该代码使用 mysql2::client 类通过 new()
方法连接到 Azure Database for MySQL。 然后,该代码调用 query()
方法来运行 SELECT 命令。 然后,它会调用方法 close()
,在终止之前关闭连接。
将 host
、database
、username
和 password
字符串替换为你自己的值。
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
更新数据
使用以下代码进行连接,并使用 UPDATE SQL 语句更新数据。
该代码使用 mysql2::client 类的 .new() 方法连接到适用于 MySQL 的 Azure 数据库。 然后,该代码调用 query()
方法来运行 UPDATE 命令。 然后,它会调用方法 close()
,在终止之前关闭连接。
将 host
、database
、username
和 password
字符串替换为你自己的值。
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
删除数据
使用以下代码进行连接,并使用 DELETE SQL 语句读取数据。
该代码使用 mysql2::client 类连接到 MySQL 服务器,运行 DELETE 命令,然后关闭与服务器的连接。
将 host
、database
、username
和 password
字符串替换为你自己的值。
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
清理资源
若要清理本快速入门中使用的所有资源,请使用以下命令删除该资源组:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes