[英]I want to connect my app to a heroku Postgress database using gino and asyncpg
我想使用 gino 和 asyncpg 將我的應用程序連接到 heroku Postgress 數據庫。 我已經指定了 ssl 模式,但它仍然給出錯誤。
代碼
import asyncpg
import asyncio
import certifi
from gino import Gino
db = Gino()
class aa(db.Model):
__tablename__ = 'aa'
id = db.Column(db.Integer(), primary_key=True)
nickname = db.Column(db.Unicode(), default='noname')
DATABASE_URL = "postgres://wglubqaksikdhr:a821fe4468ce05cd7e82da39cdb1e80a552cf295c01abdac88f1b155e6be3cec@ec2-54-247-89-181.eu-west-1.compute.amazonaws.com:5432/d6o79ufd72jt6l"
async def main():
await db.set_bind(DATABASE_URL, ssl = certifi.where(), sslmode ='require')
await db.gino.create_all()
asyncio.get_event_loop().run_until_complete(main())```
Error
asyncpg.exceptions._base.InterfaceError: `sslmode` parameter must be one of: disable, allow, prefer, require, verify-ca, verify-full
function set_bind
沒有關鍵字sslmode
。 如果要將此關鍵字解析為asyncpg
,可以在DB_DSN
中進行設置。 這是Asyncpg 文檔。 例子:
DATABASE_URL = "postgres://user:pass@locahost:5432/schema?sslmode=require"
但它對我不起作用:?D???。 添加此選項后,我無法連接到 Heroku 數據庫。
然而,這項工作對我來說:
import ssl
ctx = ssl.create_default_context(cafile="")
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
await db.set_bind(DATABASE_URL, echo=True, ssl=ctx)
await db.gino.create_all()
我還建議您閱讀有關psycopg2
的信息。 因為 Heroku 支持這個,這里是文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.