显示包含用户输入的属性

时间:2017-07-10 08:33:45

标签: python mysql sqlalchemy

我有一个 mysql数据库,我正在使用 python-sqlalchemy 在我的1 st 开始项目中,我已经要求使用我的数据库和我的属性。

我正在寻找一种方法来通过控制台上的用户需求来显示它们,例如当用户想要检查某些东西时,他可以按1然后它会出现。

我正在寻找动态功能或创建一个来帮助它。就像我在这里的代码一样,我想让它在用户按1时显示。

除了sqlalchemy

,我没有使用任何其他内容
    Ptable.field_names = ["UserID","Name","TypeID"]
qrt =session.query(users.USER_ID,users.USER_NAME,users.USER_TYPE_ID).all()#worked
for i in qrt:
    Ptable.add_row(i)
print (Ptable.get_string())

1 个答案:

答案 0 :(得分:0)

我不清楚你想要达到什么目标。我希望我走在正确的轨道上。我认为你想要实现的目标是:

  1. 打印基本的对象列表。例如汽车的基本列表(我在我的例子中使用汽车......)
  2. 为用户提供选择对象的可能性并获取有关此对象的更多信息。在以下示例中,有关汽车的更多信息。
  3. 以下示例不使用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循环以获取用户输入。只要用户没有输入x,只要变量cont为True,这个while循环就会重复。如果用户输入不是x,我们会得到并打印有关所选汽车的更多详细信息并继续循环。

    此代码必须扩展。没有检查用户输入......它是一个简单的例子。