Auto increment sql python

Как в базе данных SQLite3 к столбцу добавить autoincrement?

Здесь кусок кода, я создал бд, где указал, что id будет автоинкрементироваться (если такое слово есть), и функция, в которой я добавляю в базу данных данные (в функции, где я использую get() я просто беру значения с формы tkinter, я думаю указывать это здесь необязательно). Но есть проблема, например, у меня в базе есть 4 строки, если я удалю последнюю 4 строку, а потом захочу добавить новые данные в бд, то у меня id уже будет №5, то есть он продолжает расти. Как сделать так, чтобы при удалении строки, у меня id не увеличивался просто на единицу каждый раз?

shabelski89

DELETE FROM animal; DELETE FROM sqlite_sequence WHERE name = 'animal';
cursor.execute("INSERT INTO animal (kind, species, birth_day, weight) VALUES (?, ?, ?, ?)", (kind1, species1, birth1, weight1))

можно написать триггер на добавление новой записи, чтобы обновлял нужное тебе поле сделав что то типа select max+1

p.s. для идентификаторов это плохая практика, не смешивай идентификацию и порядковый номер, особенно если данные могут удаляться, как только ты начнешь ссылаться на записи извне по идентификатору, то у тебя начнутся конфликты

p.p.s. а если ты удаляешь ‘из середины’ твоей последовательности, а потом добавляешь новую, ты хочешь получить новое значение или освободившееся старое?

Читайте также:  Php как сделать вывод ошибок

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

Как парсить ссылк с помощью Splash в которой есть #?

Источник

Autoincrement ID Support in SQLAlchemy

Autoincrement ID Support in SQLAlchemy

How to set primary key auto increment in sqlalchemy

Table of contents

Introduction

When working with a database, creating tables with unique identifiers for each row is often necessary. One way to do this is by using autoincrement IDs. SQLAlchemy, a popular Python SQL toolkit, provides built-in support for autoincrement IDs. In this blog post, we’ll explore how to use autoincrement IDs in SQLAlchemy schema definitions and inserts.

Defining a Table with an Autoincrement ID

To define a table with an autoincrement ID in SQLAlchemy, we can use the Column class with the primary_key and autoincrement arguments. Here’s an example:

from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = 'users' primary_key=True, autoincrement=True) name = Column(String) 

In this example, we define a User table with an id column that is an Integer type, is the primary_key , and has autoincrement enabled. We also define a name column that is a String type.

Inserting Data with an Autoincrement ID

To insert data into a table with an autoincrement ID, we don’t need to specify a value for the id column. SQLAlchemy will automatically generate an ID for us. Here’s an example:

from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) session = Session() user = User(name='John Doe') session.add(user) session.commit() print(user.id) # Output: 1 

In this example, we first create an engine object that connects to an SQLite database file. We then create a Session object from the sessionmaker function and use it to create a new User object with a name of ‘John Doe.’ We add the user to the session and commit the changes. Finally, we printed the id of the user, which is automatically generated by SQLAlchemy and is equal to 1.

Conclusion

Autoincrement IDs are a convenient way to create unique identifiers for each row in a database table. In SQLAlchemy, we can easily define a table with an autoincrement ID by using the Column class with the primary_key and autoincrement arguments. When inserting data into a table with an autoincrement ID, we don’t need to specify a value for the id column. SQLAlchemy will automatically generate an ID for us. With these tools, we can quickly create robust and scalable database applications in Python.

Источник

Оцените статью