Pyodbc Python多行if记录存在update else导入

2024-10-02 02:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python非常陌生,希望我能提供回答这个问题所需的信息。我正在尝试将记录更新/插入到新创建的数据库中。我已经创建了与数据库的连接,没有任何问题,甚至可以插入记录。但是,当我试图找出要更新/插入的内容时,这就是我遇到的问题所在。我有一个数据帧(DF1),它包含两列(GovernmentID、Geometry)

以下是我正在使用的代码:

DF1 = pd.read_csv("C:\\Users\\pvagis\\Documents\\Trajectories.csv")
    DF1 = DF1.astype({"GovernmentID": str, "Geometry": str})
    print(DF1.dtypes)
    cursor = sql_conn.cursor()
    i = 0
    while i <= (len(DF1)-1):
        DB_DATA={"DI_UWI":DF1.at[i,'GovernmentID'],
                 "DI_GEOM":DF1.at[i,'Geometry']}
        UpsertQuery = ("""
                 IF NOT EXISTS (select UWI from LAND_JEOPARDY_DI_API_WELL_PATHS where UWI = :DI_UWI)
                 INSERT INTO LAND_JEOPARDY_DI_API_WELL_PATHS (WELL_PATH, UWI) values (:DI_GEOM, :DI_UWI)
                 ELSE
                 UPDATE LAND_JEOPARDY_DI_API_WELL_PATHS SET WELL_PATH = :DI_GEOM where UWI = :DI_UWI
                 """)
        cursor.execute(UpsertQuery, DB_DATA)
        sys.stdout.write("\r{}% complete   ".format(int(i/len(DF1)*100)))
        i = i + 1
    sql_conn.commit()
    cursor.execute("Delete from LAND_JEOPARDY_DI_API_WELL_PATHS where WELL_PATH = 'nan'")
    sys.stdout.write("\r{}% complete   ".format(int(i/len(DF1)*100)))
    sql_conn.commit()
    cursor.close()
    sql_conn.close()

“UpsertQuery”是我遇到问题的地方

谢谢大家


Tags: apisqllenconncursordf1pathsgeometry

热门问题