代码之家  ›  专栏  ›  技术社区  ›  thclpr

如何从sqlalchemy中删除查询结果的括号

  •  1
  • thclpr  · 技术社区  · 9 年前

    我知道这件事很简单,但我不记得该怎么做。

    基本上,我想要从函数返回的结果 select_data 成为

    ['something','something_a','something_b']
    

    [(u'something',), (u'something_a',)(u'something_b',)]
    

    下面是我正在使用的代码块:

    import sqlalchemy
    from sqlalchemy import Table, exc, and_
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    from configurations import config_loader
    
    hostname = config_loader.get('db_config', 'hostname')
    db_name = config_loader.get('db_config', 'db_name')
    db_port = config_loader.get('db_config', 'db_port')
    login = config_loader.get('db_config', 'db_login')
    pwd = config_loader.get('db_config', 'db_pwd')
    sample_table = config_loader.get('db_tables', 'some_table')
    
    
    con_string = 'mysql+mysqlconnector://{login}:{passwd}@{hostname}:{port}/{db}'
    
    engine_str = con_string.format(
        login=login, passwd=pwd, hostname=hostname, port=db_port, db=db_name
    )
    
    try:
        engine = sqlalchemy.create_engine(engine_str, echo=False)
        session = sessionmaker(bind=engine)
        connection = engine.connect()
        session = session(bind=connection)
        Base = declarative_base()
    except exc.SQLAlchemyError:
        raise
    
    
    def select_data(server):
        t = Table(some_table, Base.metadata, autoload_with=engine)
        stm = session.query(t.c.data_name).filter(
            t.c.server == server
        )
        return stm.all()
    
    1 回复  |  直到 9 年前
        1
  •  4
  •   Viach Kakovskyi    9 年前

    您的代码返回 list tuples

    raw_data = select_data(server)
    data = [item[0] for item in raw_data]
    

    还有一种提取方法:

    import operator
    
    raw_data = select_data(server)
    data = map(operator.itemgetter(0), raw_data)
    

    SQLAlchemy .