sql select in python 过程的奇怪结果
strange result of procedure with sql select in python
我已经创建了数据库,table 上面有关于软件版本的信息,url 用于寻求更新等。
我需要通过 python 从这个数据库中获取信息。
我创建了程序:
def getserverver(name):
connection = pymysql.connect(host='localhost',
user='root',
password='mysql',
db='softupdates',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
with connection.cursor() as cursor:
sql = "SELECT Name FROM softupdates.soft where Name like name"
cursor.execute(sql)
result = cursor.fetchone()
return result
并在之后使用:
panorama12onserver = (getserverver('Профессиональная ГИС %Панорама %версия 12%x64%'))['Name']
panorama11onserver = (getserverver('Профессиональная ГИС %Карта 2011%'))['Name']
panedit11onserver = (getserverver('Профессиональный векторизатор %Панорама-редактор%версия 11%'))['Name']
panedit12onserver = (getserverver('Профессиональный векторизатор %Панорама-редактор%версия 12%x64%'))['Name']
print (panorama12onserver)
print (panorama11onserver)
print (panedit12onserver)
print (panedit11onserver)
为什么我得到这样的结果:
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
每个字符串上的数据相同,但数据库中没有这样的数据。我做错了什么(除了剥离 =))?
因为您一遍又一遍地执行相同的查询。尝试更改为
sql = "SELECT Name FROM softupdates.soft where Name like %s"
cursor.execute(sql, (name,))
而且您不需要每次都在内部打开连接 getserverver
打开它一次(在该函数范围之外)并重新使用它。打开数据库连接是一项代价高昂的操作。
修复了此代码的原始问题后,如果您对为什么看不到字典感到困惑,那不是您打印字典的方式!!
(getserverver('Профессиональный векторизатор %Панорама-редактор%версия 12%x64%'))['Name']
这 returns 是一个标量值,而不是字典。
我已经创建了数据库,table 上面有关于软件版本的信息,url 用于寻求更新等。 我需要通过 python 从这个数据库中获取信息。 我创建了程序:
def getserverver(name):
connection = pymysql.connect(host='localhost',
user='root',
password='mysql',
db='softupdates',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor)
with connection.cursor() as cursor:
sql = "SELECT Name FROM softupdates.soft where Name like name"
cursor.execute(sql)
result = cursor.fetchone()
return result
并在之后使用:
panorama12onserver = (getserverver('Профессиональная ГИС %Панорама %версия 12%x64%'))['Name']
panorama11onserver = (getserverver('Профессиональная ГИС %Карта 2011%'))['Name']
panedit11onserver = (getserverver('Профессиональный векторизатор %Панорама-редактор%версия 11%'))['Name']
panedit12onserver = (getserverver('Профессиональный векторизатор %Панорама-редактор%версия 12%x64%'))['Name']
print (panorama12onserver)
print (panorama11onserver)
print (panedit12onserver)
print (panedit11onserver)
为什么我得到这样的结果:
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
Профессиональная ГИС "Карта 2011" (версия 11.13.5.7)
每个字符串上的数据相同,但数据库中没有这样的数据。我做错了什么(除了剥离 =))?
因为您一遍又一遍地执行相同的查询。尝试更改为
sql = "SELECT Name FROM softupdates.soft where Name like %s"
cursor.execute(sql, (name,))
而且您不需要每次都在内部打开连接 getserverver
打开它一次(在该函数范围之外)并重新使用它。打开数据库连接是一项代价高昂的操作。
修复了此代码的原始问题后,如果您对为什么看不到字典感到困惑,那不是您打印字典的方式!!
(getserverver('Профессиональный векторизатор %Панорама-редактор%версия 12%x64%'))['Name']
这 returns 是一个标量值,而不是字典。