Python应用部署Heroku Postgres:如何获取数据库写入权限?
Heroku Postgres 写入权限配置说明
直接使用Heroku数据库URL完成认证
Heroku提供的DATABASE_URL环境变量已经包含了所有必要的认证信息(用户名、密码、数据库名、主机、端口),不需要额外手动配置权限参数。你可以直接用这个URL连接数据库,同时必须加上SSL要求(Heroku强制要求):import os import psycopg2 # 直接通过URL连接 conn = psycopg2.connect(os.getenv('DATABASE_URL'), sslmode='require')也可以拆分URL参数(和本地连接方式对齐):
import os import psycopg2 from urllib.parse import urlparse db_url = os.getenv('DATABASE_URL') url_parts = urlparse(db_url) conn = psycopg2.connect( database=url_parts.path[1:], # 去掉路径开头的/ user=url_parts.username, password=url_parts.password, host=url_parts.hostname, port=url_parts.port, sslmode='require' )默认用户已具备读写权限
Heroku为你的应用自动创建的Postgres用户,默认拥有该数据库的完整读写权限,无需手动执行授权命令。如果遇到写入报错,优先检查连接代码是否正确,而非权限配置。验证写入权限的方法
连接成功后,执行简单的写入操作测试:cur = conn.cursor() # 假设你已创建test_table表 cur.execute("INSERT INTO test_table (content) VALUES ('测试写入')") conn.commit() # 必须提交事务才能生效 cur.close() conn.close()若出现表级权限问题(比如手动创建的表未授权),可通过Heroku CLI进入数据库执行授权:
# 连接到Heroku数据库 heroku pg:psql # 给用户授权表权限 GRANT ALL PRIVILEGES ON TABLE test_table TO your_db_user;
内容的提问来源于stack exchange,提问作者yee yee
相关产品推荐
相关产品推荐

