QuestDB on SuperSet
แก้ปัญหา QuestDB บน SuperSET
QuestDB Error
questdb error: QuestDbEngineSpec.execute() takes 3 positional arguments but 4 were given
This may be triggered by:
Issue 1002 - The database returned an unexpected error."
สาเหตุของปัญหาคือ questdb-connect มีการเรียกใช้เมธอด execute() ในลักษณะที่ทำให้ SQLAlchemy ตีความว่ามีการส่งพารามิเตอร์เกินมาหนึ่งตัว นี่เป็นปัญหาที่เกิดขึ้นบ่อยในไลบรารีที่ไม่ได้เป็นทางการ (official) และอาจยังไม่ได้มีการแก้ไขในเวอร์ชัน 1.1.4
แนวทางแก้ไขโค้ดของ questdb-connect โดยตรง
-
ค้นหาไฟล์ที่เกี่ยวข้อง: หาไฟล์
questdb.pyในไดเรกทอรีการติดตั้ง Python ของคุณ โดยทั่วไปจะอยู่ที่:/path/to/python/lib/pythonX.Y/site-packages/questdb/sqlalchemy/base.py(ขึ้นอยู่กับระบบปฏิบัติการและวิธีติดตั้ง Python ของคุณ) -
แก้ไขเมธอด
execute(): ค้นหาเมธอดexecute()ในไฟล์base.pyที่อยู่ในคลาสQuestDBDialect_baseหรือQuestDBEngineSpec
การแก้ไขโค้ดที่เกิดขึ้นจริงบนเครื่อง ActiveDog
พบไฟล์ที่ /opt/svlt/svlbis4/venv/lib/python3.10/site-packages/qdb_superset/db_engine_specs/questdb.py
แก้ไขใน method "execute()"
ของเดิมคือ
def execute( # pylint: disable=unused-argument
cls,
cursor: Any,
query: str,
**kwargs: Any,
) -> None:
แก้ไขเป็น
def execute( # pylint: disable=unused-argument
cls,
cursor: Any,
query: str,
parameters: Optional[Dict[str, Any]] = None, # เพิ่มบรรทัดนี้
**kwargs: Any,
) -> None:
หรือสามารถแก้อีกแบบเป็น
def execute( # pylint: disable=unused-argument
cls,
cursor: Any,
query: str,
parameters: Any = None, # หรือใช้แค่ Any ก็ได้
**kwargs: Any,
) -> None:
No comments to display
No comments to display