如果我们使用DictCursor,如何在pymysql中定义键?

时间:2019-04-10 18:05:35

标签: python mysql python-3.x pymysql

我一直在寻找一种方法来更好地表示通过pymysql在mysql表上运行查询并偶然发现DictCursor后得到的输出。
我试了一下,就能达到以下目的

import pymysql

# Connect to mysql database
conn = pymysql.connect('db_conn_str', 'user_r',
                       'pwd_r', 'db_name')

# Run a query to list all tables in database
cur = conn.cursor(pymysql.cursors.DictCursor)
cur.execute('show tables')
tables = cur.fetchall()

# We get a list of dictionaries
print(tables)

我得到如下输出

[
    {'Tables_in_db_name': 'table_x'}, 
    {'Tables_in_db_name': 'table_y'}, 
    {'Tables_in_db_name': 'table_z'}
]

我想知道密钥Tables_in_db_name是否可以定义?如果没有,那么如何选择键的名称。

1 个答案:

答案 0 :(得分:1)

键来自结果集的标题。

如果运行命令SHOW TABLES,则不能更改标题。这是mysql客户端中此命令的示例:

mysql> show tables from test;
+----------------+
| Tables_in_test |
+----------------+
| bar            |
| foo            |
+----------------+

如果您希望获得更多控制权,则可以查询INFORMATION_SCHEMA(这正是SHOW TABLES内部实际执行的操作):

mysql> select table_name as `my_custom_key` from information_schema.tables 
  where table_schema='test';
+---------------+
| my_custom_key |
+---------------+
| bar           |
| foo           |
+---------------+