Python SQLAlchemy反射:如何从特定列查询数据?

Python SQLAlchemy反射:如何从特定列查询数据?,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,使用SQLAlchemy反射,如何查询特定列中的数据 testtable = Table('member', Metadata, autoload=True) def TestConnection(): data = None loopCounter = 0 for data in session.query(testtable).filter_by(is_active=1, is_deleted=0): print(loopCounter + 1,

使用SQLAlchemy反射,如何查询特定列中的数据

testtable = Table('member', Metadata, autoload=True)

def TestConnection():
    data = None
    loopCounter = 0 
    for data in session.query(testtable).filter_by(is_active=1, is_deleted=0): 
        print(loopCounter + 1, data)
        loopCounter += 1
    if data is None:
        raise Exception ("Could not find any data that matches your query")        
    else:
        print("It worked!")

TestConnection()
上面的查询提供了members表中所有列中的所有数据。然而,我想要的是从列中获取特定数据。例如,我想检索用户名密码列,但语法不正确。以下是我目前的情况:

def TestConnection():
    loopCounter = 0 
    for password, username in session.query(testtable).filter_by(is_active=1, is_deleted=0):
        print(loopCounter + 1, data)
        loopCounter += 1
    if data is None:
        raise Exception ("Could not find any data that matches your query")        
    else:
        print("It worked!")
该操作失败,并出现以下错误:

Traceback (most recent call last):
File "/home/workspace/upark/src/monitor.py", line 36, in <module>
TestConnection()
File "/home/workspace/upark/src/monitor.py", line 26, in TestConnection
for password, username in session.query(testtable).filter_by(is_active=1, is_deleted=0):
ValueError: too many values to unpack (expected 2)
这将使:

1 pass1 userone
2 pass2 usertwo

但正如你所看到的,那是在我把所有的专栏都拿回来之后。我想要的是只从我需要的列中获取数据。例如,Members表有10列。为了提高效率,我只需要从其中两个表中获取数据。

只需指定要选择的列[
session.query(testtable.c.password,testtable.c.username)
],而不是整个表[
session.query(testtable)
]:


那不行。对于session.query(testtable.password,testtable.username)中的数据,它失败,错误为
。筛选依据(is\u active=1,is\u deleted=0):AttributeError:'Table'对象没有属性“password”
请记住我在使用反射,所以我没有创建“列”我自己在python中更新了答案-需要使用
testtable.c.column1
而不是
testtable.column1
。尝试了你的建议,但现在它抛出了一个不同的错误:
文件/usr/local/lib/python3.2/dist包/SQLAlchemy-0.8.0b2-py3.2.egg/SQLAlchemy/inspection.py”,第74行,在inspect type(检查类型)中sqlalchemy.exc.noInspection available(检查可用):对于类型为
try
filter
的对象,没有可用的检查系统,而不是使用符合条件的列名:
qry=session.query(testtable.c.password,testtable.c.username)。筛选器(testtable.c.is\u活动==1,testtable.c.is\u删除==0)
它终于起作用了。谢谢两件事。第一,为什么在使用“filter_by”时会出现
非类型
错误?第二,你有没有一个指针指向我在哪里可以得到更好的解释SQLAlchemy反射?因为我怀疑我在这里问的是关于sqlalchemy的文档页面,如果是的话,就不是那么直截了当了。
1 pass1 userone
2 pass2 usertwo
def TestConnection():
    data = None
    loopCounter = 0 
    for data in session.query(testtable.c.password, testtable.c.username).filter_by(is_active=1, is_deleted=0): 
        pwd, usr = data
        print(loopCounter + 1, pwd, usr)
        loopCounter += 1
    if data is None:
        raise Exception ("Could not find any data that matches your query")        
    else:
        print("It worked!")