PlanetScale
PlanetScale provide a hosted MySQL database with 5GB of storage included in the free tier.
1. Sign up to PlanetScale
Go to https://auth.planetscale.com/sign-up
2. Create a new database
Select New database on the dashboard.
Create a database.


3. Create a password
Go to Settings → Passwords and click New password.

Save the host, username, and password values as
Val Town environment variables - use
planetScaleHost, planetScaleUsername, and planetScalePassword
respectively.

4. Create your first table
Copy and paste this val to create a table with the given schema.
import process from "node:process";import { queryPlanetScale } from "https://esm.town/v/vtdocs/queryPlanetScale";
export const planetScaleCreateStockTable = queryPlanetScale(  {    host: process.env.planetScaleHost,    username: process.env.planetScaleUsername,    password: process.env.planetScalePassword,  },  `CREATE TABLE stock (  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,  name varchar(255) NOT NULL,  price varchar(255) NOT NULL);`);5. Insert an item
Insert one or more items.
import process from "node:process";import { queryPlanetScale } from "https://esm.town/v/vtdocs/queryPlanetScale";
export const planetScaleInsertStockTable = queryPlanetScale(  {    host: process.env.planetScaleHost,    username: process.env.planetScaleUsername,    password: process.env.planetScalePassword,  },  `INSERT INTO stock (name, price) VALUES (?, ?);`,  ["banana", 15]);6. Query an item
Use the rows property to get your query results - or return the entire
results object to see what other data is available.
import process from "node:process";import { queryPlanetScale } from "https://esm.town/v/vtdocs/queryPlanetScale";
export const planetScaleSelectStockTable = (async () => {  const results = await queryPlanetScale(    {      host: process.env.planetScaleHost,      username: process.env.planetScaleUsername,      password: process.env.planetScalePassword,    },    `SELECT id, name, price FROM stock WHERE name=?`,    ["banana"]  );  return results.rows[0];})();7. Do more than queries!
Read the source of the
@vtdocs/queryPlanetScale
helper, see how it uses the @planetscale/database SDK, refer to the
driver’s documentation, and extend
it!