入门

使用 Supabase 与 Python

了解如何创建一个 Supabase 项目,向你的数据库添加一些示例数据,并从 Python 应用程序查询数据。


1

创建一个 Supabase 项目

前往 database.new 并创建一个新的 Supabase 项目。

或者,您可以使用管理 API 创建项目

1
# First, get your access token from https://supabase.org.cn/dashboard/account/tokens
2
export SUPABASE_ACCESS_TOKEN="your-access-token"
3
4
# List your organizations to get the organization ID
5
curl -H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
6
https://api.supabase.com/v1/organizations
7
8
# Create a new project (replace <org-id> with your organization ID)
9
curl -X POST https://api.supabase.com/v1/projects \
10
-H "Authorization: Bearer $SUPABASE_ACCESS_TOKEN" \
11
-H "Content-Type: application/json" \
12
-d '{
13
"organization_id": "<org-id>",
14
"name": "My Project",
15
"region": "us-east-1",
16
"db_pass": "<your-secure-password>"
17
}'

当您的项目启动并运行时,前往 表格编辑器,创建一个新表格并插入一些数据。

或者,您可以在项目的 SQL 编辑器 中运行以下代码片段。这将创建一个包含一些示例数据的 instruments 表。

1
-- Create the table
2
create table instruments (
3
id bigint primary key generated always as identity,
4
name text not null
5
);
6
-- Insert some sample data into the table
7
insert into instruments (name)
8
values
9
('violin'),
10
('viola'),
11
('cello');
12
13
alter table instruments enable row level security;

通过添加 RLS 策略使表格中的数据可公开读取

1
create policy "public can read instruments"
2
on public.instruments
3
for select to anon
4
using (true);
2

使用 Flask 创建 Python 应用程序

为你的 Python 应用程序创建一个新目录并设置一个虚拟环境。

终端
1
mkdir my-app && cd my-app
2
python3 -m venv venv
3
source venv/bin/activate
3

安装 Flask 和 Supabase 客户端库

开始的最快方法是使用 Flask 作为 Web 框架,并使用 supabase-py 客户端库,它为从 Python 应用程序使用 Supabase 提供了便捷的接口。

使用 pip 安装这两个包。

终端
1
pip install flask supabase
4

创建环境变量文件

在你的项目根目录下创建一个 .env 文件,并用你的 Supabase 连接变量填充它

项目 URL
可发布密钥
匿名密钥
1
SUPABASE_URL=<SUBSTITUTE_SUPABASE_URL>
2
SUPABASE_PUBLISHABLE_KEY=<SUBSTITUTE_SUPABASE_PUBLISHABLE_KEY>

你还可以从 项目的 连接 对话框 获取项目 URL 和密钥。

阅读 API 密钥文档 以全面了解所有密钥类型及其用途。

5

从应用查询数据

安装 python-dotenv 包以加载环境变量

1
pip install python-dotenv

创建一个 app.py 文件,并添加一个从你的 instruments 表格使用 Supabase 客户端获取数据的路由。

app.py
1
import os
2
from flask import Flask
3
from supabase import create_client, Client
4
from dotenv import load_dotenv
5
6
load_dotenv()
7
8
app = Flask(__name__)
9
10
supabase: Client = create_client(
11
os.environ.get("SUPABASE_URL"),
12
os.environ.get("SUPABASE_PUBLISHABLE_KEY")
13
)
14
15
@app.route('/')
16
def index():
17
response = supabase.table('instruments').select("*").execute()
18
instruments = response.data
19
20
html = '<h1>Instruments</h1><ul>'
21
for instrument in instruments:
22
html += f'<li>{instrument["name"]}</li>'
23
html += '</ul>'
24
25
return html
26
27
if __name__ == '__main__':
28
app.run(debug=True)
6

启动应用

运行 Flask 开发服务器,在浏览器中访问 https://:5000,你应该会看到乐器列表。

终端
1
python app.py

下一步#