首页 > 解决方案 > 如何使用 SQLAlachemy 进行选择?

问题描述

我正在使用 SQAlchemy 和 python,没有烧瓶,当我执行无限循环并调用 sqlalchemy 提供的 select 方法时,它返回我的表的值,但是当从 phpmyadmin 更改特定列的值时,在 python 脚本中没有反映所做的更改,有人可以给我一些建议或帮助,请提前谢谢你。

PD:我把代码留给你分析:

from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, create_engine, Float, DateTime, update, Date, Time
from sqlalchemy.sql import select
import time
import os

ahora = Table('ahora', metadata,
              Column('id', Integer, primary_key=True),
              Column('temperatura', Float()),
              Column('humedad', Float()),
              Column('canal1', Float()),
              Column('canal2', Float()),
              Column('canal3', Float()),
              Column('canal4', Float()),
              Column('hora', Time()),
              )
engine = create_engine('mysql+pymysql://javi:javiersolis12@10.0.0.20/Tuti')
connection = engine.connect()
while True:
    #Seleccionara la unica entrada en la tabla Configuracion
    query = select([configuracion])
    confi_actual = connection.execute(query).fetchone()
    query_aux = select([ahora])
    datos_actuales = connection.execute(query_aux).fetchone()
    print(datos_actuales)
    time.sleep(8)

标签: pythonsqlalchemy

解决方案


您可以在会话中指定需要选择到查询中的组件。然后使用,例如all()获取所有的输入。请看下一个例子:

import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base


Base = declarative_base()

...

class Ahora(Base):
    __tablename__ = 'ahora'
    id = sa.Column(sa.Integer, primary_key=True)
    temperatura: int = sa.Column(sa.Float)
    ...

...

engine = create_engine('mysql+pymysql://javi:javiersolis12@10.0.0.20/Tuti')
session = Session(engine)
query = session.query(Ahora)
# some actions with query, for example filter(), limit(), etc
ahora = query.all()

推荐阅读