0

我有两个表:用户和帖子

它们的结构是:

邮政:

+---------+----------+------+-----+---------+----------------+
| Field   | Type     | Null | Key | Default | Extra          |
+---------+----------+------+-----+---------+----------------+
| id      | int(11)  | NO   | PRI | NULL    | auto_increment |
| name    | char(30) | YES  |     | NULL    |                |
| user_id | int(11)  | YES  |     | NULL    |                |
+---------+----------+------+-----+---------+----------------+

用户:

+---------+----------+------+-----+---------+----------------+
| Field   | Type     | Null | Key | Default | Extra          |
+---------+----------+------+-----+---------+----------------+
| user_id | int(11)  | NO   | PRI | NULL    | auto_increment |
| name    | char(30) | YES  |     | NULL    |                |
| email   | char(30) | YES  |     | NULL    |                |
+---------+----------+------+-----+---------+----------------+

我明白了:(数据字典的键)

['post.user_id', 'user_id', 'name', 'email', 'post.name', 'id']

我的python代码是:

import MySQLdb

import MySQLdb.cursors

con = MySQLdb.connect(user = "root", passwd = "123456", db = "mydb",   cursorclass=MySQLdb.cursors.DictCursor)

cur = con.cursor()

cur.execute("select * from user, post where user.user_id = post.user_id")

print cur.fetchone().keys()

但是,为什么 data dict 的键是这样的?谢谢。我的英语不太好,对不起

4

1 回答 1

0

当您选择 * 时,您会询问用户和帖子中的所有列。由于 user 和 post 具有重叠名称的列,因此在其中一些之前添加 tablename,以创建唯一键。

我不确定你在期待什么,但你可以通过给列别名来明确控制你得到的键:

“选择 user.user_id 作为 user_id,post.name 作为 post_name,user.name 作为 user_name ...”

于 2012-12-13T15:12:19.913 回答