1

Тема: SQLite - записати змінні у базу данних

Я працюю з SQLite3 через BD browser але не зміг записати змінні у базу данних. Допоможіть будь ласка, буду дуже вдячний:)
Код:

import sqlite3
connection = sqlite3.connect('resume.sl3', 5)
cursor = connection.cursor()
cursor.execute('CREATE TABLE resume_table (Questions TEXT, Answers TEXT);')

print('Welcome to resume placeholder!')

def resume():
    print('OK')
    name = input('What`s your name?: ')
    birthday = input('What`s your date of birth: ')
    work_experience = input('What was your work experience?: ')
    phone_number = input('What is your phone number?: ')
    address = input('What is your address?: ')
    print(f'Name - {name}'
          f'\nBirthday - {birthday}'
          f'\nWork experience - {work_experience}'
          f'\nPhone number - {phone_number}'
          f'\nAddress - {address}')
    resume_text()


def resume_text():
    connection.execute(f"INSERT INTO resume_table (Questions, Answers) VALUES 'Name', {name};")
    connection.execute(f"INSERT INTO resume_table (Questions, Answers) VALUES 'Birthday', {birthday};")
    connection.execute(f"INSERT INTO resume_table (Questions, Answers) VALUES 'Work experience', {work_experience};")
    connection.execute(f"INSERT INTO resume_table (Questions, Answers) VALUES 'Phone number', {phone_number};")
    connection.execute(f"INSERT INTO resume_table (Questions, Answers) VALUES 'Address', {address};")
    connection.commit()
    connection.close()


try:
    first_y_or_n = input('Want to start?: ')
    if first_y_or_n == 'y':
        resume()
    elif first_y_or_n == 'n':
        print('Exit...')
except Exception as exc:
    print(f'Error {exc}')

2 Востаннє редагувалося Firefox is dead (08.03.2023 18:56:20)

Re: SQLite - записати змінні у базу данних

дивно чому у вас помилка не вилізлає
у вас змінні name, birthday, work_experience, phone_number та address оголошені в межах функції resume(), тому вони не доступні (не оголошені) у resume_text()

спробуйте використовувати ORM (наприклад https://pypi.org/project/peewee/)

також загортайте свій код у тег code (кнопка така є)

Подякували: Betterthanyou1

3 Востаннє редагувалося Betterthanyou (09.03.2023 00:01:02)

Re: SQLite - записати змінні у базу данних

Як один із варіантів. Передайте всі поля при виклику resume_text

resume_text(name, birthday, work_experience, phone_number, address)


Ну і відповідно у реалізації метода їх теж потрібно прописати

def resume_text(name, birthday, work_experience, phone_number, address):
Один із варіантів з ORM від sqlalchemy.orm
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///my_resume.sqlite', echo=True)
Session = sessionmaker(bind=engine)
Base = declarative_base()

class Resume(Base):
    __tablename__ = 'resume_table'
    id = Column(Integer, primary_key=True)
    question = Column(String)
    answer = Column(String)

Base.metadata.create_all(engine)

def resume():
    name = input('What`s your name?: ')
    birthday = input('What`s your date of birth: ')
    work_experience = input('What was your work experience?: ')
    phone_number = input('What is your phone number?: ')
    address = input('What is your address?: ')
    print(f'Name - {name}'
          f'\nBirthday - {birthday}'
          f'\nWork experience - {work_experience}'
          f'\nPhone number - {phone_number}'
          f'\nAddress - {address}')
    resume_text(name, birthday, work_experience, phone_number, address)

def resume_text(name, birthday, work_experience, phone_number, address):
    session = Session()
    session.add(Resume(question='Name', answer=name))
    session.add(Resume(question='Birthday', answer=birthday))
    session.add(Resume(question='Work experience', answer=work_experience))
    session.add(Resume(question='Phone number', answer=phone_number))
    session.add(Resume(question='Address', answer=address))
    session.commit()
    session.close()

try:
    first_y_or_n = input('Want to start?: ')
    if first_y_or_n == 'y':
        resume()
    elif first_y_or_n == 'n':
        print('Exit...')
except Exception as exc:
    print(f'Error {exc}')

4

Re: SQLite - записати змінні у базу данних

Дякую