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()
感谢大家的回复。
我之前看到有人问过同样的问题,但我没有看到类似的问题。
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()
感谢大家的回复。