punto final para probar la alquimia sql. El error dice: ¿el objeto del módulo no se puede llamar? Además, la palabra de consulta no está resaltada. El tutorial dice que debería hacer db.query(models.Posts).all() pero eso tampoco funciona. normalmente vs resalta el código y se completa automáticamente para que sepa que se está conectando al objeto correcto.
cuando escribo db.query(), ¿el ide no reconoce el método de consulta? ¿Incluso lo importé manualmente desde sqlalchemy.orm y todavía no se reconoce? todo lo demás funciona bien, solo probar el orm a través del método de consulta está fallando.
El error dice: Archivo "C:****/**/***lib\site-packages\sqlalchemy\orm\session.py", línea 747, en _connection_for_bind conn = bind.connect() AttributeError: 'function' el objeto no tiene atributo 'conectar'
En el tutorial, el profesor simplemente escribe db. query(models.Post).all() y se reconocen todas las funciones y métodos. En la consulta mía no se reconoce. Ayuda por favor.
from logging import exception from random import randrange from tkinter.tix import STATUS from typing import Optional from urllib import response from fastapi import Body, FastAPI, Query, Response ,status, HTTPException , Depends from pydantic import BaseModel import psycopg2 from psycopg2.extras import RealDictCursor import time from sqlalchemy import create_engine, engine_from_config from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker,session , query import models from database import ormengine , SessionLocal , get_db @app.get("/sqlalchemy") def test_post(db: session= Depends(get_db)): post = db.query(models.Post).all() return {"data":post}El archivo models.py es:
import string from typing import Text from xmlrpc.client import boolean from database import Base, SessionLocal from sqlalchemy import TIMESTAMP, Integer, PrimaryKeyConstraint, String, Boolean, Column from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.sql.expression import null , text from sqlalchemy.sql.sqltypes import Text , TIMESTAMP class Post(Base): __tablename__= 'apiproj2' id= Column( Integer , primary_key= True, nullable= False) title= Column( String, nullable= False) content = Column( String, nullable= False) published= Column(Boolean, server_default= 'True' , nullable=False) created_at = Column(TIMESTAMP( timezone=True), nullable= False , server_default= text('now()'))base de datos.py
from sqlalchemy import create_engine, engine_from_config from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker SQLALCHEMY_DATABASE_URL = "postgresql://postgres:naijalife@localhost/fastapi database" sqlalchemy_conn= 'postgresql://postgres:naija4life@localhost/fastapi database' ormengine= create_engine(sqlalchemy_conn) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind= engine_from_config ) Base = declarative_base() # Dependency def get_db(): db = SessionLocal() try: yield db finally: db.close()Estaba llamando a la locomotora equivocada, debería haber llamado a ormengine. El motor que creé para conectarme a la base de datos. El tutorial tenía un error. Cambié esto pero no funcionó, después de reiniciar el código vs funcionó. Gracias por la ayuda chicos.