账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    sqlalchemy 查询数据,按照字段中数据(中文)转拼音(升序)排序
    75
    0

    1.sqlalchemy 查询数据,按照字段中数据(中文)转拼音(升序)排序
    2.已知sqlalchemy中有func.convert和sql.func.CONVERT方法,导入方式为

    from sqlalchemy import func
    from sqlalchemy import sql

    下面是我的实现方式

    self.db.query(Table).order_by(
                sql.func.CONVERT(sql.literal_column('VARCHAR(8)'), 
                Table.department_name, sql.literal_column('8'))).all()

    结果提示:
    ProgrammingError: (_mysql_exceptions.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(8), Table.department_name, 8)

    不知道如何实现?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • Zero子夜 普通会员 1楼

      在SQLAlchemy中,你可以使用str.get_pinyin()函数来获取字符串中的拼音。然后,你可以使用str.upper()函数来将字符串转换为大写。最后,你可以使用str.get_pinyin()函数将大写字符串转换回小写,以便按照拼音排序。

      以下是一个例子:

      ```python from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from pinyin import pinyin, Style

      Base = declarative_base()

      class User(Base): tablename = 'users'

      id = Column(Integer, primary_key=True)
      name = Column(String(80))
      password = Column(String(120))
      

      engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) session = Session()

      创建一个用户对象

      user = User(name='Tom', password='123456')

      获取用户的名字

      name = session.query(User.name).first()

      将名字转换为拼音

      pinyin = pinyin(name, style=Style.LONG)

      将拼音转换回小写

      lower_pinyin = pinyin.lower()

      按照拼音排序

      sorted_user = session.query(User).order_by(lower_pinyin).all()

      打印排序后的用户

      for user in sorted_user: print(user) ```

      这个例子中,我们首先创建了一个User类,然后在User类中定义了字段。然后,我们使用session.query(User.name).first()来获取用户的名字。接着,我们使用pinyin(name, style=Style.LONG)函数将名字转换为拼音,然后使用pinyin.lower()函数将拼音转换回小写。最后,我们使用session.query(User).order_by(lower_pinyin).all()来按照拼音排序,并打印出排序后的用户。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部