Setting Up Appsmith for Database Integration
Appsmith connects directly to relational and NoSQL databases. For each data source, a separate Datasource is configured with connection parameters.
Supported Databases
PostgreSQL, MySQL, MariaDB, Microsoft SQL Server, Oracle, MongoDB, Redis, Elasticsearch, Amazon S3, Google Sheets, DynamoDB.
PostgreSQL
In Appsmith → Explorer → Datasources → New Datasource → PostgreSQL:
Host: 10.0.1.50
Port: 5432
Database: production_db
Username: appsmith_user
Password: ****
SSL Mode: verify-full
SSL Certificate: [insert cert]
User with minimum privileges:
CREATE USER appsmith_user WITH PASSWORD 'password';
GRANT CONNECT ON DATABASE production_db TO appsmith_user;
GRANT USAGE ON SCHEMA public TO appsmith_user;
-- Only needed tables
GRANT SELECT, UPDATE ON users TO appsmith_user;
GRANT SELECT ON orders TO appsmith_user;
GRANT SELECT, INSERT ON support_notes TO appsmith_user;
Parameterized Queries
-- Secure query with Appsmith parameters
SELECT
id, email, name, status, plan,
created_at, last_login_at
FROM users
WHERE
({{ searchInput.text }} = '' OR
email ILIKE '%' || {{ searchInput.text }} || '%' OR
name ILIKE '%' || {{ searchInput.text }} || '%')
AND ({{ statusFilter.selectedOptionValue }} = 'ALL' OR
status = {{ statusFilter.selectedOptionValue }})
ORDER BY created_at DESC
LIMIT 50 OFFSET {{ (pageSelector.pageNo - 1) * 50 }}
MongoDB
// Appsmith MongoDB Query
{
"aggregate": "orders",
"pipeline": [
{ "$match": {
"customerId": "{{ userIdInput.text }}",
"status": { "$in": {{ statusFilter.selectedOptionValues }} }
}},
{ "$sort": { "createdAt": -1 } },
{ "$limit": 20 },
{ "$lookup": {
"from": "products",
"localField": "items.productId",
"foreignField": "_id",
"as": "productDetails"
}}
]
}
Prepared Statements
Appsmith automatically uses prepared statements for SQL queries when the "Use Prepared Statements" option is enabled. This prevents SQL injections when substituting user input.
Timeline
Connection and first 5–10 queries — 1 day.







