|
|
7 mesi fa | |
|---|---|---|
| .. | ||
| lib | 7 mesi fa | |
| README.md | 7 mesi fa | |
| pizzasql.gemspec | 7 mesi fa | |
Ruby client library for PizzaSQL - a simple, lightweight SQL database with HTTP API.
Add this line to your application's Gemfile:
gem 'pizzasql'
And then execute:
bundle install
Or install it yourself:
gem install pizzasql
require 'pizzasql'
# Connect to database
db = PizzaSQL.connect('http://localhost:8080/mydb')
# Execute a query
rows = db.sql('SELECT * FROM users')
# Process results
rows.each do |row|
puts "User ID: #{row['id']}, Name: #{row['name']}"
end
db = PizzaSQL.connect(
'https://pizzabase.cloud/my_org/sql/my_db:32131',
'a78tsda68bdt6ad5afsd65saf5sd5a7d6sd87asy8d9aysnd7ay=='
)
rows = db.sql('SELECT 42 as answer')
puts rows.first['answer'] # => 42
# Create table
db.sql(<<~SQL)
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE
)
SQL
# Insert data
db.sql(<<~SQL)
INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'alice@example.com')
SQL
rows = db.sql('SELECT * FROM users')
# Extract specific field
user_ids = rows.map { |row| row['id'] }
puts user_ids.inspect # => [1, 2, 3, ...]
# Filter results
adults = rows.select { |row| row['age'] >= 18 }
# Export entire database as SQL
sql_data = db.export(format: 'sql')
# Export specific table as CSV
csv_data = db.export(table: 'users', format: 'csv')
# Save to file
File.write('users.csv', csv_data)
# Read CSV file
csv_data = File.read('users.csv')
# Import with table creation
db.import(csv_data, format: 'csv', create_table: true)
# Import SQL file
sql_data = File.read('backup.sql')
db.import(sql_data, format: 'sql')
Creates a new PizzaSQL client connection.
Parameters:
uri (String) - Database URI (e.g., http://localhost:8080/mydb)api_key (String, optional) - API key for authenticationReturns:
Client - Connected client instanceExample:
db = PizzaSQL.connect('http://localhost:8080/mydb')
Executes a SQL query and returns the results.
Parameters:
query (String) - SQL query stringReturns:
Array<Hash> - Array of rows (each row is a hash)Raises:
RuntimeError - If query failsExample:
rows = db.sql('SELECT * FROM users WHERE age > 18')
Exports database or table data.
Parameters:
table (String, optional) - Table name (nil for entire database)format (String) - Export format: 'sql' or 'csv'Returns:
String - Exported dataRaises:
RuntimeError - If export failsExample:
data = db.export(table: 'users', format: 'csv')
Imports data into the database.
Parameters:
data (String) - Data to importformat (String) - Import format: 'sql' or 'csv'create_table (Boolean) - Create table if it doesn't exist (CSV only)Returns:
nilRaises:
RuntimeError - If import failsExample:
csv_data = File.read('users.csv')
db.import(csv_data, format: 'csv', create_table: true)
All methods raise RuntimeError on failure. Use standard Ruby error handling:
begin
rows = db.sql('SELECT * FROM users')
rescue => e
puts "Query failed: #{e.message}"
end
MIT