Почему в sqlite в поле типа TEXT при записи чисел данные преобразуются в float?

Создаю таблицу через:
def init_db():
    conn = sqlite3.connect('products.db')
    cursor = conn.cursor()
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS products (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT,
            sku TEXT,
            price REAL,
            quantity INTEGER,
            del INTEGER DEFAULT 0
        )
    ''')
    conn.commit()
    conn.close()

Т.е. поле sku по идее имеет строковый тип. Далее я беру таблицу csv с товарами в которой sku это числа, загружаю в таблицу и вместо артикула 777777 получаю 777777.0
Пробовал преобразовывать насильно к строке перед записью в базу, не получается.
df = pd.read_csv('products.csv')  

for index, row in df.iterrows():
    if np.isnan(row['ID']):
        continue
    product_import = {
        'id': int(row['ID']),
        'name': str(row['Название товара']),
        'sku': str(row['Артикул']),
        'price': float(row['Цена']),
        'quantity': int(row['Количество']),
    }

В таблицу записи добавляю так:
def add_product_db(product):
    conn = sqlite3.connect('products.db')
    cursor = conn.cursor()
    cursor.execute('''
        INSERT INTO products (id, name, sku, price, quantity, del)
        VALUES (?, ?, ?, ?, ?, ?)
    '''product['id'], product['name'], product['sku'], product['price'], product['quantity'], 0))
    conn.commit()
    conn.close()

Как заставить sqlite не преобразовывать данные?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы