Я хочу вставить pandas фрейм данных в sqltable, который я предварительно создал с использованием SQL alchemy.
Однако при этом я получаю дубликаты, так как SQLite имеет столбец индекса и когда Я копирую с фрейма данных, он использует другой индекс, и даже если данные совпадают, он может добавить его.
Подробная информация о моем статусе:
Мой pandas датафрейм не имеет иметь индекс на вставке. (index = False) Также, хотя index является первичным ключом, важны оставшиеся данные. Ни одна строка данных не должна быть дублированной, например, иметь одинаковую комбинацию содержимого для каждого из столбцов.
Моя SQL таблица создания алхимии: (из database.py)
class SQLTable(Base):
__tablename__ = 'sqltable'
__table_args__ = {'sqlite_autoincrement': True}
index = Column(Integer, primary_key= True, nullable=False)
A = Column(Integer, nullable=True)
B = Column(String, nullable=True)
C = Column(BigInteger, nullable=True)
D = Column(Integer, nullable=True)
E = Column(String, nullable=True)
F = Column(Float, nullable=True)
Однако, я только wi sh могу вставить в sqltable, если строка, отличная от индекса, еще не существует. Я нашел python - pandas -to sql -only-insert-new-rows однако я не знаю, как применить это к моим данным.
df.to_sql(
name="sqltable",
con=engine,
if_exists='replace',
index=False,
dtype={
'index': sqlalchemy.types.INTEGER(),
'A': sqlalchemy.types.INTEGER(),
'B': sqlalchemy.types.VARCHAR(length=255),
'C': sqlalchemy.types.BIGINT(),
'D': sqlalchemy.types.VARCHAR(length=255),
'E': sqlalchemy.types.VARCHAR(length=255),
'F': sqlalchemy.types.Float(precision=3, asdecimal=True)
}
)
Как к go по поводу индекса? Каков наилучший способ сделать это?
Онлайн-учебник по вставке новых строк в SQL таблицу