python - 显示带有用户输入的属性

标签 python mysql sqlalchemy

我有一个 mysql 数据库,正在与 python-sqlalchemy 一起使用 在我的第一个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. 打印基本的对象列表。例如,汽车的基本列表(我在示例中使用汽车...)
  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 循环来获取用户输入。只要变量 cont 为 True,只要用户不输入 x,这个 while 循环就会重复。如果用户输入不是 x,我们将获取并打印有关所选汽车的更多详细信息,然后继续循环。

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

关于python - 显示带有用户输入的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45007288/

相关文章:

python - 在 TensorFlow 中对整数张量进行卷积

python - 在 Redhat 6.8 上将 glibc 2.12 升级到 2.14 以使用 Tensorflow 和 Python

python - 使用 Selenium 和 Beautifulsoup 解析 Airdna map 悬停在文本上

mysql - 如何在mysql表中获取所有 child 的用户?

python - 为什么 flask sql alchemy 不更新记录的属性?

python - SQLAlchemy 声明性语法中具有抽象基的多态多对多关系

javascript - 陷入 .change 循环 - Select2 Drop Down Lists

java - 我如何从一个表中调用 2 行以显示在 jtable 中

python - SQLAlchemy - 多线程持久对象创建,如何合并回单个 session 以避免状态冲突?

python - 从命令行为 SQLAlchemy/Pyramid 启用 SQL 语句