我有一个 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())
最佳答案
我并不完全清楚你想要实现什么。我希望我走在正确的轨道上。我认为您想要实现的是:
- 打印基本的对象列表。例如,汽车的基本列表(我在示例中使用汽车...)
- 为用户提供选择对象并获取有关该对象的更多信息的可能性。在下面的示例中,有更多有关汽车的信息。
下面的例子没有使用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/