0

我正在尝试使用 fastapi 通过异步连接到 Postgresql,但出现 NotimplementError,
似乎代码
记录 = await objects.get(test5, orderId=result['orderId'])
导致了这个问题。但我不知道如何修复它

网络中有一些解决方案,但是没有用

 import platform
 import asyncio
 if platform.system() == "Windows": 
     asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())

*代码

 import peewee_async
 import peewee_asyncext
 from fastapi import FastAPI
 from playhouse.postgres_ext import * 

 db = peewee_asyncext.PooledPostgresqlExtDatabase(
     database    = 'postgres',
     host        = '127.17.0.2',  
     port        = '5432',   
     user        = 'postgres',
     password    = 1234,
     register_hstore = False,
     max_connections = 20,
     connect_timeout = 3
     )
 objects = peewee_async.Manager(database =db)
 db.set_allow_sync = False 

 class test5(Model):
     orderId         = FixedCharField(primary_key = True) 
     transactionId   = FixedCharField()
     class Meta:
          database = db
          table_name = 'test' 
  
 app = FastAPI()

 @app.post("/test")
 async def test():    
     result = {
               "orderId":"test",
               "transactionId":"123"
              }

     try:
           record = await objects.get(test5, orderId=result['orderId'])
      except Exception as e:
         if str(e) == "":
              await objects.execute(test5.insert(result))
      return result

*要求

  import requests,json
  data={}  

  url='http://127.0.0.1:8000/test'
  r=requests.post(url,json.dumps(data))
  print(r.text)

*错误

 Future exception was never retrieved
 future: <Future finished exception=NotImplementedError()>
 Traceback (most recent call last):
 File "D:\Python\lib\site-packages\peewee_async.py", line 852, in connect_async
 await conn.connect()
 File "D:\Python\lib\site-packages\peewee_async.py", line 1014, in connect
 self.pool = await aiopg.create_pool(
 File "D:\Python\lib\site-packages\aiopg\pool.py", line 300, in from_pool_fill
 await self._fill_free_pool(False)
 File "D:\Python\lib\site-packages\aiopg\pool.py", line 336, in _fill_free_pool
 conn = await connect(
 File "D:\Python\lib\site-packages\aiopg\connection.py", line 65, in connect
 connection = Connection(
 File "D:\Python\lib\site-packages\aiopg\connection.py", line 772, in __init__
 self._loop.add_reader(
 File "D:\Python\lib\asyncio\events.py", line 504, in add_reader
 raise NotImplementedError
 NotImplementedError 
 Future exception was never retrieved
 future: <Future finished exception=NotImplementedError()>
 Traceback (most recent call last):
 File "C:\Users\user\Desktop\test\others\.\test5.py", line 39, in test
 record = await objects.get(test5, orderId=result['orderId'])
 File "D:\Python\lib\site-packages\peewee_async.py", line 166, in get
 await self.connect()
 File "D:\Python\lib\site-packages\peewee_async.py", line 302, in connect
 await self.database.connect_async(loop=self.loop, timeout=self._timeout)
 File "D:\Python\lib\site-packages\peewee_async.py", line 852, in connect_async
 await conn.connect()
 File "D:\Python\lib\site-packages\peewee_async.py", line 1014, in connect
 self.pool = await aiopg.create_pool(
 File "D:\Python\lib\site-packages\aiopg\pool.py", line 300, in from_pool_fill
 await self._fill_free_pool(False)
 File "D:\Python\lib\site-packages\aiopg\pool.py", line 336, in _fill_free_pool
 conn = await connect(
 File "D:\Python\lib\site-packages\aiopg\connection.py", line 65, in connect
 connection = Connection(
 File "D:\Python\lib\site-packages\aiopg\connection.py", line 772, in __init__
 self._loop.add_reader(
 File "D:\Python\lib\asyncio\events.py", line 504, in add_reader
 raise NotImplementedError
 NotImplementedError

*Windows 版本信息:

 Python 3.9.10 (tags/v3.9.10:f2f3f53, Jan 17 2022, 15:14:21) [MSC v.1929 64 bit (AMD64)] on     
 win32
 Windows 10 Pro, version 20H2, OS build 19042.1526
4

0 回答 0