Я застрял с запросом в функции.Вот мой код:
def action(changePin, action):
pins = Pins.query.all()
changePin = int(changePin)
deviceName = Pins.query.filter_by(pin=changePin, name)
if action == "on":
GPIO.output(changePin, GPIO.HIGH)
print("turned ", deviceName , " on")
if action =="off":
GPIO.output(changePin, GPIO.LOW)
print("turned ", deviceName , " off")
for pin in pins:
db.session.commit()
Ошибка для этого
File "<stdin>", line 4
SyntaxError: positional argument follows keyword argument
В строке 4 я хочу найти имя контакта, относящегося к контакту "changePin", это адаптированный код из учебника,Вот оригинальный код, в котором словарь содержит информацию о контактах, а не базу данных. Код:
deviceName = pins[changePin]['name']
Я пробовал множество разных способов, но ни один из них не работает, вот список различных версий строки 4:
deviceName = Pins.query.filter_by(changePin=pin).name
deviceName = Pins.query.filter_by(changePin, name=name)
deviceName = Pins.query.filter_by(Pins.pin=changePin, Pins.Name)
deviceName = Pins.query(Pins.pin=changePin, Pins.Name)
deviceName = Pins.query(**changePin, Pins.name)
deviceName = Pins.query(**changePin)
deviceName = db.session.filter_by(Pins.changePin)
deviceName = db.session(Pins).filter_by(pin=changePin)
и многие другие варианты, я читал документы по sqlalchemy и документы по колбам, но я не видел никаких сравнений, я смотрел и пробовал это; запрос sqlalchemy о фляге с ключевым словом в качестве переменной , но получил это;
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in action
TypeError: BaseQuery object argument after ** must be a mapping, not int
это мой код models.py;
class Pins(db.Model):
id = db.Column(db.Integer, primary_key=True)
pin = db.Column(db.Integer, index=True, unique=True)
name = db.Column(db.String(64))
upDown = db.Column(db.String(4))
state = db.Column(db.String(9))
def __repr__(self):
return '<Valves {}>'.format(self.pin)
Запрос с функцией наМодель Flask-SQLAlchemy дает объекту BaseQuery не вызываемую ошибку
Уважаемый Менно Спасибо, что обратились ко мне. Я последовал вашему совету, и это работает !!!
rows = Pins.query.filter_by(pin=changePin).all()
deviceName = rows[0].name
Iне понимаю, как работает часть "row [0] .name", но она работает, спасибо, спасибо
помогите с Полом