SqlAlchemy拼接两列以进行`ilike`查询

huangapple go评论104阅读模式
英文:

SqlAlchemy concat two columns for `ilike` query

问题

I'm trying to recreate the following (PostgreSQL) query in SqlAlchemy:

  1. select
  2. u.first_name,
  3. u.last_name,
  4. from users u
  5. where ((u.first_name ||' '|| u.last_name) ilike '%Mark Zuckerberg%')

Essentially I'm concatenating the two columns then searching by the full name, which in my case is passed in via a user query.

Is there a way to do this in SqlAlchemy?

英文:

I'm trying to recreate the following (PostgreSQL) query in SqlAlchemy:

  1. select
  2. u.first_name,
  3. u.last_name,
  4. from users u
  5. where ((u.first_name ||' '|| u.last_name) ilike '%Mark Zuckerberg%')

Essentially I'm concatenating the two columns then searching by the full name, which in my case is passed in via a user query.

Is there a way to do this in SqlAlchemy?

答案1

得分: 3

以下是翻译好的部分:

  1. from sqlalchemy import create_engine, Column, Integer, String
  2. from sqlalchemy.orm import sessionmaker
  3. from sqlalchemy.ext.declarative import declarative_base
  4. Base = declarative_base()
  5. class User(Base):
  6. __tablename__ = 'users'
  7. id = Column(Integer, primary_key=True)
  8. first_name = Column(String)
  9. last_name = Column(String)
  10. # 创建SQLAlchemy引擎
  11. engine = create_engine('postgresql://username:password@host:port/database_name')
  12. # 创建一个会话
  13. Session = sessionmaker(bind=engine)
  14. session = Session()
  15. # 连接first_name和last_name列
  16. full_name = User.first_name + ' ' + User.last_name
  17. # 执行查询
  18. query = session.query(User.first_name, User.last_name).filter(full_name.ilike('%Mark Zuckerberg%'))
  19. # 检索结果
  20. results = query.all()
  21. # 打印结果
  22. for first_name, last_name in results:
  23. print(f'First Name: {first_name}, Last Name: {last_name}')
英文:

Example, how you can do it

  1. from sqlalchemy import create_engine, Column, Integer, String
  2. from sqlalchemy.orm import sessionmaker
  3. from sqlalchemy.ext.declarative import declarative_base
  4. Base = declarative_base()
  5. class User(Base):
  6. __tablename__ = 'users'
  7. id = Column(Integer, primary_key=True)
  8. first_name = Column(String)
  9. last_name = Column(String)
  10. # Create the SQLAlchemy engine
  11. engine = create_engine('postgresql://username:password@host:port/database_name')
  12. # Create a session
  13. Session = sessionmaker(bind=engine)
  14. session = Session()
  15. # Concatenate the first_name and last_name columns
  16. full_name = User.first_name + ' ' + User.last_name
  17. # Perform the query
  18. query = session.query(User.first_name, User.last_name).filter(full_name.ilike('%Mark Zuckerberg%'))
  19. # Retrieve the results
  20. results = query.all()
  21. # Print the results
  22. for first_name, last_name in results:
  23. print(f'First Name: {first_name}, Last Name: {last_name}')

huangapple
  • 本文由 发表于 2023年6月1日 02:24:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/76376344.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定