【问题标题】:How to get fields by name in query Python?如何在查询 Python 中按名称获取字段?
【发布时间】:2017-04-11 22:30:51
【问题描述】:

我在 Python 脚本中使用 Mysql Connection。

如何按名称从表中获取结果?

cursor = conn.cursor()
cursor.execute("SELECT * FROM local")

现在我按索引来做:

results = cursor.fetchall()
for row in results:
   print row[0] //

我想通过以下名称获取字段:print row["name"]

【问题讨论】:

标签: python mysql python-3.x


【解决方案1】:

如果你正在使用 mysql-connector,试试这个

cursor = conn.cursor(dictionary=True)
cursor.execute("SELECT * FROM myTable")
results = cursor.fetchall()
for row in results:
    print( row )

如果dictionary 为True,则游标将行作为字典返回。

【讨论】:

  • 您先生应该获得一枚奖章。 2 小时的互联网研究,除了你的以外,没有任何解决方案有效!快速、小巧、干净。非常感谢。我显然支持你。
  • 我第二个勋章:英雄 Pythonista First Class。
【解决方案2】:

您可以使用 pandas 库

import pandas as pd
sql = "SELECT * FROM local"
df = pd.read_sql(sql,conn)

for index,row in df.iterrows():
    print(row['name'])

希望对你有帮助

【讨论】:

  • 如何在 Cent OS 中安装pandas
  • 点安装熊猫
【解决方案3】:

如果您使用 MySQLdb for python,您可以将 DictCursor 传输到您的游标实例。

这是一个使用 MySQLdb 的完整示例:

>>> import MySQLdb
>>> db = MySQLdb.connect(host="localhost",user="test",passwd="test",db="test")
>>> cursor = db.cursor(MySQLdb.cursors.DictCursor)
>>> cursor.execute("SELECT * FROM test_user")
2
>>> results = cursor.fetchall()
>>> for result in results:
...    print(result["username"])
test1
test2

希望有用。

此外,您可以在此处找到适合您的元组情况的答案。 python mysql.connector DictCursor?

【讨论】:

  • 它不起作用 "TypeError: tuple indices must be integers, not str"
  • 你用的是什么mysql模块?
  • import mysql.connector
  • 对于mysql连接器,使用@Anoop的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多