我有一个关于如何检查条目是否已经在数据库表中的更合适/更有效的方法的问题。
假设我有一个Foo用单个属性调用的表,Name它也是unique。
如果已经存在具有此类名称的条目,在插入之前检查的更好方法是什么?我可以想到两种选择:
from sqlalchemy import MetaData, Table, Column, String, \
create_engine
from sqlalchemy.orm import mapper, relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.exc import IntegrityError
Base = declarative_base()
class Foo(Base):
__tablename__ = "foo"
name = Column(String(), primary_key=True)
@staticmethod
def silent_insert1(name):
if not session.query(Foo).filter(Foo.name == name).first():
foo = Foo()
foo.name = name
session.add(foo)
session.commit()
else:
print("already exists 1")
@staticmethod
def silent_insert2(name):
try:
foo = Foo()
foo.name = name
session.add(foo)
session.commit()
except(IntegrityError):
print("already exists 2") …Run Code Online (Sandbox Code Playgroud)