fromcelloimportApp,DatabaseConfigapp=App()app.enable_database(DatabaseConfig(url="postgresql://user:pass@localhost:5432/mydb",pool_size=20,max_lifetime_secs=1800,idle_timeout_secs=600,connect_timeout_secs=5))# Local developmentapp.enable_database(DatabaseConfig.local())# sqlite://localhost/cello_dev
fromcello.databaseimportDatabasedb=Database(url="postgresql://localhost/mydb")awaitdb.connect()# Queriesrows=awaitdb.fetch_all("SELECT * FROM users")user=awaitdb.fetch_one("SELECT * FROM users WHERE id = $1",[1])awaitdb.execute("INSERT INTO users (name) VALUES ($1)",["Alice"])# Transactionstx=awaitdb.begin_transaction()awaittx.execute("UPDATE accounts SET balance = balance - 100 WHERE id = $1",[1])awaittx.execute("UPDATE accounts SET balance = balance + 100 WHERE id = $1",[2])awaittx.commit()awaitdb.close()
fromcello.databaseimporttransactional@app.post("/transfer")@transactionalasyncdeftransfer(request):data=request.json()# Automatically wrapped in a transaction# Commits on success, rolls back on exceptionreturn{"success":True}