提问者:小点点

SQLAlchemy-MySQL-检查现有表中是否存在行[重复]


我对SQLAlchemy进行了简单的设置,目前它的设置是与现有数据库连接,如下所示:

self.users = db.Table('users', self.metadata, autoload=True, autoload_with=self.engine)

它连接到现有的表,但是当我连接到不是由SQLAlchemy创建的表时,我不知道如何检查现有的行。

我试过的:

session.query(self.users.query.filter(self.users.id == 1).exists()).scalar()

我发现表对象没有属性查询


共2个答案

匿名用户

您的错误意味着对象没有查询属性,因为SQLAlchemy有单独的查询API。

请参阅sqlachemy中的“如何查询表”一文

匿名用户

好吧,对于所有想知道的人来说,解决办法如下:

>

  • 选项

     check_existing = self.users.select().where(self.users.c.username == "admin")
     check_existing_result = session.execute(check_existing).fetchall()
    
     if len(check_existing_result) == 0:
         print('empty')
     else:
         print('found')
    

    选项

     query = session.query(self.users).all()
    
     for obj in query:
         if obj[1] == 'admin':
             print('true')
    

    选项

     check_existing = self.users.select().where(self.users.c.username == "admin")
     check_existing_result = session.execute(check_existing).scalar()
    
         if check_existing_result == None:
             print('empty')
         else:
             print('true')
    

    由于执行了sqlalchemy exists查询