Python SQLite3从SELECT查询中检索变量

时间:2015-03-19 16:41:26

标签: python sql variables

我正在忙着编写一个python脚本,它正在查询两个db表,以便在每行找到一行数据。这是我目前的剧本

#========================================================================
# DB CONNECT FUNCTION
#========================================================================
def f_connect(status):

    global gv_conn
    global gv_curs

    if status == 1:
        gv_conn = sqlite3.connect("./data.db")
        gv_curs = gv_conn.cursor()
    else
        gv_conn.close()

#========================================================================
# PREPARE SQL STATEMENTS
#========================================================================
def f_statements():

    global users_stmt
    users_stmt = ("select * from users")
    global users_curs
    users_curs = gv_conn.cursor()

    global uinfo_stmt
    uinfo_stmt = ("select * from uinfo" +
                  "where ui_u_id = ?")
    global uinfo_curs
    uinfo_curs = gv_conn.cursor()

#========================================================================
#
# MAIN SCRIPT START
#
#========================================================================

f_connect(1)

f_statements()

la_users = []

for u_row in users_curs.execute(users_stmt):

    # THIS LINE GETS USERS FROM THE ABOVE STATEMENT
    # AND ADDS THEM TO THE DICTIONARY
    la_users.append({"u_id": u_row[0], "u_name": u_row[1]})

    # THIS LINE EXECUTES ANOTHER QUERY TO RETRIEVE
    # A SINGLE ROW OF DATA FROM ANOTHER TABLE
    la_uinfo = uinfo_curs.execute(uinfo_stmt, "1")

f_connect(0)

我的问题是,当我执行第一个sql语句时,我可以通过循环使用存储数据的for循环来获取数据,这样我就可以使用u_row [int]访问它。

当我执行第二个查询时,它将它存储在la_uinfo中,尽管当我尝试从la_uinfo [int]获取数据时它不起作用?如何在不使用其他for循环的情况下从第二个查询中检索数据? (我不应该考虑它只返回一行)

1 个答案:

答案 0 :(得分:0)

游标不可索引,因此cursor[0]将无效。要检索游标的第一行,您应该使用cursor.fetchone()