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

Posted

技术标签:

【中文标题】SQLAlchemy - MySQL - 检查现有表中是不是存在行[重复]【英文标题】:SQLAlchemy - MySQL - Check if row exists in existing table [duplicate]SQLAlchemy - MySQL - 检查现有表中是否存在行[重复] 【发布时间】:2020-07-05 11:21:38 【问题描述】:

我使用 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()

我知道 Table 对象没有属性查询

【问题讨论】:

【参考方案1】:

您的错误意味着Table 对象没有query 属性,因为SQLAlchemy 有一个单独的Query API。

看到这个帖子How to query a table, in sqlalchemy

【讨论】:

这是一个没有基础的现有表,答案来自 2010 年【参考方案2】:

好的,想知道解决方案的人如下:

    选项

     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')
    

感谢Executing a sqlalchemy exists query

【讨论】:

以上是关于SQLAlchemy - MySQL - 检查现有表中是不是存在行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法从 sqlalchemy 插入到 mysql

Flask-SQLAlchemy 检查表中是不是存在行

从现有数据库 SQLAlchemy 获取 DDL

如何在 SQLAlchemy 中定义无符号整数

SQLAlchemy如何检查值是否在两列中的值之间?

sqlalchemy:查询数据库中的现有表