如果 table 存在,数据帧到 SQL db

Dataframe to SQL db if table exists

下面的代码片段会将 DataFrame 写入 SQL db,

df.to_sql(tablename, con, if_exists='append', index=False)

它的作用是....如果 table 已经存在,它会将数据从 DataFrame 写入 SQL, 如果假设 table 未在数据库中创建,则它会使用指定的 table 名称创建 table,然后写入数据库。 但只有当 table 已经存在于数据库中时我才需要写记录.. 怎么做,请帮帮我...

.to_sql() 不提供仅在 table 存在时添加行的功能。 .to_sql() 仅提供以下功能:

Tables can be newly created, appended or replaced with

根据您的要求,您需要首先检查 table 是否存在,如果存在则仅使用 .to_sql()。

要检查 table 是否存在,请使用 information_schema 并将您的 TABLE 替换为您的 table 名称:

SELECT * FROM information_schema.tables WHERE table_name = '<YOUR TABLE>'

函数检查table是否存在,如果存在,则在if子句中执行你的处理。 在下面的代码中,table_name 将是您的 table.

的名称
def check_if_table_exist():
    query="Select * from information_schema.tables where table_name = (%s)"
    conn=getConnection()
    cursor=conn.cursor()
    try:
        table_name="bcg"
        cursor.execute(query, (table_name, ))
        result=cursor.fetchone()
        print(result)
        if(result):
            print("Table exist")
            # Do your processing here to insert using .to_sql()
        else:
            print("table does not exist")
        pass
    except:
        print("Error")
        traceback.print_exc()
        pass

我只需要在插入数据库之前添加一个条件... 这是我完成的代码...

if tablename in  tables:
    df.to_sql(tablename, con, if_exists='append', index=False)

我创建了一个名为 tables 的列表,其中包含 table 个数据库名称,我正在检查我需要插入数据库的 table 在 tables.. 如果是,那么它将被插入到数据库中。 这就是我所需要的...它有效!