jmi*_*loy 5 python mysql select mysql-python
SELECT * FROM a, b WHERE ...
Run Code Online (Sandbox Code Playgroud)
Mysql允许在查询结果中使用重复的列名.因此,在终端中,没有列名称使用上述查询作为前缀.
但是,我在使用DictCursor的python中使用mysqldb.结果是列表名称为键的字典列表.有时,dict游标会自动在列名前加上表名.据我所知,它是针对两个不明确的列名称中的第二个,但仅当第二个值是唯一的时才这样做.无论如何,我想强制光标使用表名为所有键添加前缀.
来自fetch.row()函数的mysqldb文档 ...
第二个参数(how)告诉它应该如何表示行.默认情况下,它为零,表示作为元组返回.how = 1表示,将其作为字典返回,其中键是列名,如果有两列具有相同的名称(例如,来自连接),则返回table.column.how = 2表示与how = 1相同,除了键总是table.column; 这是为了与旧的Mysqldb模块兼容.
所以,它似乎可行,但我没有直接使用fetch.row()函数...所以问题是,如何在获取行时使mysqldb dict游标始终使用how = 2?
我不太喜欢*在查询中使用。列出您的列并根据需要分配您自己的别名。正如您将看到的,我也不喜欢隐式连接。
SELECT a.col1 AS acol1,
a.col2 AS acol2,
b.col1 AS bcol1,
b.col2 AS bcol2
FROM a
INNER JOIN b
ON ...
WHERE...
Run Code Online (Sandbox Code Playgroud)