показать атрибуты с пользовательскими входами


0 принят

Мне не совсем понятно, чего вы хотите достичь. Надеюсь, я на правильном пути. Я думаю, что вы хотите достичь:

  1. Распечатайте основной список объектов. Например, базовый список автомобилей (я использую автомобили в своем примере ...)
  2. Предоставьте пользователю возможность выбрать объект и получить дополнительную информацию об этом объекте. В следующем примере больше информации о машине.

В приведенном ниже примере не используется mysql, но это можно легко настроить. Я считаю, что это менее актуально для основного вопроса. Если вы хотите получить дополнительную информацию об использовании mysql, оставьте комментарий.

Пример:

from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from datetime import datetime


Base = declarative_base()


class Car(Base):
    __tablename__ = 'car'
    id = Column('id', Integer, primary_key=True)
    created = Column('created', DateTime)
    brand = Column(String(250))

    def __init__(self, created, brand):
        self.created = created
        self.brand = brand

    def __repr__(self):
        return '<{created} - {brand}>'.format(created=self.created, brand=self.brand)

engine = create_engine('sqlite:///')
session = sessionmaker()
session.configure(bind=engine)
ex_ses = session()
Base.metadata.create_all(engine)

for car_number in range(5):
    # Brand maybe not the best name...
    ex_ses.add(Car(datetime.now(),brand = 'Car {0}'.format(car_number)))
    ex_ses.commit()

# Print basic cars list
print('Cars list:')
cars_basic= (ex_ses.query(Car.brand).all())
for car in cars_basic:
    print(car[0])

# Set up loop to accept user input
cont = True
while cont:
    car_input = input('Enter number for more information, x to exit:')
    if car_input.lower() == 'x':
        cont = False
        break
    elif int(car_input) in range(5):
        car_brand = 'Car '+car_input
        print('Details for {}'.format(car_brand))
        print(ex_ses.query(Car).filter(Car.brand == 'Car '+car_input).first())

В приведенном выше примере мы создаем объект Car и добавляем некоторые автомобили в базу данных. После создания автомобилей мы печатаем базовый список разных автомобилей и настраиваем цикл while, чтобы получить вход пользователя. Этот цикл while будет повторяться до тех пор, пока переменная cont будет True, если пользователь не вводит x. если пользовательский ввод не является x, мы получаем и печатаем более подробную информацию о выбранном автомобиле и продолжаем в цикле.

Этот код должен быть расширен. Нет проверки ввода пользователя ... он представлен как простой пример.

питон, MySQL, SQLAlchemy,

python,mysql,sqlalchemy,

0

Ответов: 1


0 принят

Мне не совсем понятно, чего вы хотите достичь. Надеюсь, я на правильном пути. Я думаю, что вы хотите достичь:

  1. Распечатайте основной список объектов. Например, базовый список автомобилей (я использую автомобили в своем примере ...)
  2. Предоставьте пользователю возможность выбрать объект и получить дополнительную информацию об этом объекте. В следующем примере больше информации о машине.

В приведенном ниже примере не используется mysql, но это можно легко настроить. Я считаю, что это менее актуально для основного вопроса. Если вы хотите получить дополнительную информацию об использовании mysql, оставьте комментарий.

Пример:

from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from datetime import datetime


Base = declarative_base()


class Car(Base):
    __tablename__ = 'car'
    id = Column('id', Integer, primary_key=True)
    created = Column('created', DateTime)
    brand = Column(String(250))

    def __init__(self, created, brand):
        self.created = created
        self.brand = brand

    def __repr__(self):
        return '<{created} - {brand}>'.format(created=self.created, brand=self.brand)

engine = create_engine('sqlite:///')
session = sessionmaker()
session.configure(bind=engine)
ex_ses = session()
Base.metadata.create_all(engine)

for car_number in range(5):
    # Brand maybe not the best name...
    ex_ses.add(Car(datetime.now(),brand = 'Car {0}'.format(car_number)))
    ex_ses.commit()

# Print basic cars list
print('Cars list:')
cars_basic= (ex_ses.query(Car.brand).all())
for car in cars_basic:
    print(car[0])

# Set up loop to accept user input
cont = True
while cont:
    car_input = input('Enter number for more information, x to exit:')
    if car_input.lower() == 'x':
        cont = False
        break
    elif int(car_input) in range(5):
        car_brand = 'Car '+car_input
        print('Details for {}'.format(car_brand))
        print(ex_ses.query(Car).filter(Car.brand == 'Car '+car_input).first())

В приведенном выше примере мы создаем объект Car и добавляем некоторые автомобили в базу данных. После создания автомобилей мы печатаем базовый список разных автомобилей и настраиваем цикл while, чтобы получить вход пользователя. Этот цикл while будет повторяться до тех пор, пока переменная cont будет True, если пользователь не вводит x. если пользовательский ввод не является x, мы получаем и печатаем более подробную информацию о выбранном автомобиле и продолжаем в цикле.

Этот код должен быть расширен. Нет проверки ввода пользователя ... он представлен как простой пример.

питон, MySQL, SQLAlchemy,
Похожие вопросы