MySQL python:游标returns变量名

MySQL python: Cursor returns the variable name

我之前看到有人问过同样的问题,但我没有看到类似的问题。

def get_session(Var = '', Key=''):
    conn = connection()
    cursor = conn.cursor()
    print "Var: "+Var
    cursor.execute("Select %(var)s FROM users WHERE sessions = %(key)s",{'var':Var,'key':Key})
    if(cursor.rowcount == 1):
        name = cursor.fetchone()
        print name
        return name

输出如下:

get_session(Var = 'NAME', Key='asdf123')

Var:NAME

('NAME',)

+----+----------+----------+---------------------------+
| ID | NAME     | PASS     |  sessions                 |
+----+----------+----------+---------------------------+
|  1 | Potato   | test     |  asdf123                  |
|  2 | asdf123  | test2    |  asdasd                   |
+----+----------+----------+---------------------------+

正确的输出必须是:

get_session(Var = 'NAME', Key='asdf123')

Var:NAME

('Potato',)

get_session(Var = 'PASS', Key='asdf123')

Var:PASS

('test',)

我认为主要问题是 mysql 检测到带引号的名称,但我不知道如何修复它。

你可以试试:

cursor.execute("Select %s FROM users WHERE sessions = '%s'" %("Name","asdf123"))

所以查询变为:

Select Name FROM users WHERE sessions = 'asdf123'

你也可以使用变量 例如:

name_of_col = "Name"
session_name = "asdf123"

cursor.execute("Select %s FROM users WHERE sessions = '%s'" %(name_of_col,session_name  ))

问题是 sql 自动输入的引号

def get_session(Var = '', Key=''):
    conn = connection()
    cursor = conn.cursor()
    sql = "Select "+ Var+" FROM users WHERE sessions = %(key)s"
    print "Var: "+Var
    cursor.execute(sql,{'key':Key})
    print str(cursor.rowcount)
    if(cursor.rowcount == 1):
        name = cursor.fetchone()
        print name
        return name
    else:
        return None
    cursor.close()
    conn.close()

感谢大家的回复。