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 - 检查现有表中是不是存在行[重复]的主要内容,如果未能解决你的问题,请参考以下文章