You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取PostgreSQL脚本导入SQL Server遇TypeError错误求助

解决read_sql()缺少'required positional argument: con'错误

这个错误本质是调用pandas.read_sql()时没传必填的数据库连接对象(con参数),下面是具体排查和解决步骤:

  • 先确认PostgreSQL连接是否正确创建
    不管用psycopg2还是SQLAlchemy,必须先建立有效的数据库连接:

    from sqlalchemy import create_engine
    # 替换成你的PostgreSQL实际信息
    pg_con = create_engine('postgresql://username:password@your_pg_host:5432/your_db')
    

    如果用psycopg2,要确保连接成功:

    import psycopg2
    pg_con = psycopg2.connect(
        dbname='your_db',
        user='username',
        password='password',
        host='your_pg_host'
    )
    
  • 检查read_sql的调用格式
    错误写法(缺con参数):

    import pandas as pd
    df = pd.read_sql("SELECT * FROM source_table")  # 直接传SQL,没给连接
    

    正确写法(传入PostgreSQL连接):

    df = pd.read_sql("SELECT * FROM source_table", con=pg_con)
    
  • 导入SQL Server的后续步骤
    读取到数据后,写入SQL Server同样需要对应的连接对象:

    # 用SQLAlchemy创建SQL Server连接(需提前安装pyodbc)
    mssql_con = create_engine('mssql+pyodbc://username:password@your_mssql_host/your_db?driver=ODBC+Driver+17+for+SQL+Server')
    # 将数据写入SQL Server表
    df.to_sql('target_table', con=mssql_con, if_exists='replace', index=False)
    
  • 额外排查点

    • 确认连接字符串里的用户名、密码、主机地址、端口、数据库名完全正确
    • 必要的依赖库是否安装:pip install pandas psycopg2-binary sqlalchemy pyodbc
    • 检查PostgreSQL和SQL Server的服务是否正常运行,网络是否能互通

内容的提问来源于stack exchange,提问作者Cheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:30:43