есть фрагмент кода, который вносит данные в таблицу, которую ты сам же и создал с помощью бота:
@bot.message_handler(commands=['insert_data'])
def get_column_name(message):
db_name = connect_text.get('dbname', '...')
user_name = connect_text.get('user', '...')
password = connect_text.get('password', '...')
tableName = table_name.get('t_name', '...')
conn = psycopg2.connect(dbname=db_name, user=user_name, password=password, host='127.0.0.1')
cur = conn.cursor()
cur.execute(f"SELECT column_name FROM information_schema.columns WHERE table_name='{tableName}'")
rows = cur.fetchall()
column_names = [row[0] for row in rows]
global column_names_str
column_names_str = "\n".join(column_names)
bot.send_message(message.chat.id, f'выберите колонку, в которую хотите внести данные:\n{column_names_str}')
bot.register_next_step_handler(message, get_column_value, column_names)
def get_column_value(message, column_names):
column_name = message.text.strip()
if column_name not in column_names:
bot.send_message(message.chat.id, 'некорректное название колонки. попробуйте еще раз.')
bot.register_next_step_handler(message, get_column_value, column_names)
return
bot.send_message(message.chat.id, f'введите данные для колонки {column_name}:')
bot.register_next_step_handler(message, insert_data, column_name, column_names)
def insert_data(message, column_name, column_names):
db_name = connect_text.get('dbname', '...')
user_name = connect_text.get('user', '...')
password = connect_text.get('password', '...')
tableName = table_name.get('t_name', '...')
conn = psycopg2.connect(dbname=db_name, user=user_name, password=password, host='127.0.0.1')
cur = conn.cursor()
data = message.text.strip()
cur.execute(f"INSERT INTO {tableName} ({column_name}) VALUES ('{data}')")
conn.commit()
bot.send_message(message.chat.id, f'данные "{data}" успешно добавлены в колонку {column_name}!\nхотите добавить что-то еще? (y/n)')
bot.register_next_step_handler(message, get_answer, column_names)
def get_answer(message, column_names):
answer = message.text
if answer == 'y':
bot.send_message(message.chat.id, f'выберите колонку, в которую хотите внести данные:\n{column_names_str}')
bot.register_next_step_handler(message, get_column_value, column_names)
else:
bot.send_message(message.chat.id, 'хорошо')
все работает, но есть одно но: когда я заполняю другой столбец, до данные вносятся на новую строчку
как выглядят сообщения в боте:
как сделать так, чтобы сначала заполнялась вся первая строка, а потом предыдущая? (с учетом того, что я не пишу запрос "insert into ... where ... = ...")