我有一个 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())
答案 0 :(得分:0)
我不清楚你想要达到什么目标。我希望我走在正确的轨道上。我认为你想要实现的目标是:
以下示例不使用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,我们会得到并打印有关所选汽车的更多详细信息并继续循环。
此代码必须扩展。没有检查用户输入......它是一个简单的例子。