Я хотел бы сбросить данные в мою базу данных mysql. Если я хочу добавить дополнительные данные, я использую тот же файл cvs, как показано ниже, но дополненный дополнительной строкой.
Если я перезапущу свой код, данные просто снова включаются, плюс дополнительная строка. Это означает, что мои данные удваиваются плюс один.
Как я могу проверить базу данных и исключить двойные числа, чтобы включить только самую новую строку?
Исходный файл CSV выглядит следующим образом:
Ticker;Name;Country
A;Pablo;USA
B;Nico;USA
C;Dimi;USA
D;George;USA
E;Will;USA
F;Paul;USA
Расширенный файл CSV:
Ticker;Name;Country
A;Pablo;USA
B;Nico;USA
C;Dimi;USA
D;George;USA
E;Will;USA
F;Paul;USA
G;Tom;Russia
Код выглядит следующим образом:
import sqlalchemy as sqlal
import pandas as pd
mysql_engine = sqlal.create_engine('mysql+mysqlconnector://xxx/Test_Schema',poolclass=sqlal.pool.NullPool)
mysql_engine.raw_connection()
if not mysql_engine.dialect.has_table(mysql_engine, 'master_data'):
metadata = sqlal.MetaData(mysql_engine)
sqlal.Table('master_data', metadata,
sqlal.Column('Ticker', sqlal.String(20), nullable=False, primary_key=True),
sqlal.Column('Name', sqlal.String(250), nullable=True),
sqlal.Column('Country', sqlal.String(10), nullable=True)
)
metadata.create_all(mysql_engine)
df_csv = pd.read_csv('TestFile.csv', encoding='cp1252', sep=';', index_col=0).dropna()
print(df_csv)
df_csv.to_sql(name='master_data', con=mysql_engine, if_exists = 'append', chunksize=900, index=True)