如果 sql table 存在于 运行 python 中的代码之后,如何自动更改名称?

How to automatically change name if sql table exists after running the code in python?

我正在尝试 运行 每天一次此代码来记录数据帧以制作历史数据集。

我已将 mysql 与 pymysql 连接,使用 pymysql 将我的 pandas 数据帧保存到 mysql 并转换 pandas 数据帧使用 .to_sql 方法进入 sql。

但是,如果我 运行 此代码 2 次,table 的名称会重叠并且不会 运行 第二次。 因此,每次 运行 这段代码时,我都需要更改 table 的名称(data_day001、data_day002、data_day003...)。

# Credentials to database connection 
hostname="hostname"
dbname="sql_database"
uname="admin"
pwd="password"

# Create SQLAlchemy engine to connect to MySQL Database
engine = create_engine("mysql+pymysql://{user}:{pw}@{host}/{db}"
                .format(host=hostname, db=dbname, user=uname, pw=pwd))

# Convert dataframe to sql table                               
channel_data.to_sql('data_day001', engine, index=False)

请告诉我如何解决这个问题。 非常感谢您。

使用inspect函数:

from sqlalchemy import create_engine, inspect

def get_table_name(engine):
   names = inspect(engine).get_table_names()
   return f"data_day{len(names):03}"

engine = create_engine(...)

channel_data.to_sql(get_table_name(engine), engine, index=False)

几天后:

>>> inspect(engine).get_table_names()
['data_day000', 'data_day001', 'data_day002', 'data_day003', 'data_day004']