python - 从查询中获取列表列名称+数据类型

标签 python mysql metadata

我有几个(非常标准的)(MySQL)查询,如下所示:

select *
from table_one a
left join table_two on a.id = b.id
left join table_three c on b.id = c.id.

table_one 看起来像这样:

id (int)
label (varchar(15)

table_two 看起来像这样:

id (int)
name (varchar(20)

table_三看起来像这样:

id (int)
some_field_name (varchar(25)

所以结果是这样的:

id|label|id|name|id|some_field_name|
..|.....|..|....|..|...............|

现在,我想要的是一个列表,其中包含他的查询将生成的列名(最好还有列类型)

像这样

id(int)
label (varchar(15)
id (int)
name varchar(20)
id (int)
some_field_name (varchar(25)

我知道我可以使用 INFORMATION_SCHEMA.COLUMNS 表来获取此信息,但我仍然必须为每个表手动运行此查询并自己“编写”每个查询的列表。

我更喜欢一个可以提供查询的函数,然后返回字段名+字段类型的列表。

最佳答案

我们在 php 中有 $stmt->getColumnMeta() 来获取列的元数据

<?php
$user = 'root';
$pass = 'infiniti';
$DB = 'test';
$host = 'localhost';

$c = new \PDO('mysql:host='.$host.';dbname='.$DB, $user, $pass);
$c->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);

$dataQuery = 'select * from info limit 3';

$stmt = $c->prepare($dataQuery);
$stmt->execute();
$rs = $stmt->fetchAll(\PDO::FETCH_ASSOC);

echo $stmt->columnCount();
for($i = 0; $i < $stmt->columnCount(); $i++)
{
    print_r($stmt->getColumnMeta($i));
}


output

Array
(
    [native_type] => LONG
    [pdo_type] => 2
    [flags] => Array
        (
            [0] => not_null
            [1] => primary_key
        )

    [table] => info
    [name] => id
    [len] => 11
    [precision] => 0
)
Array
(
    [native_type] => VAR_STRING
    [pdo_type] => 2
    [flags] => Array
        (
        )

    [table] => info
    [name] => fname
    [len] => 60
    [precision] => 0
)
Array
(
    [native_type] => VAR_STRING
    [pdo_type] => 2
    [flags] => Array
        (
        )

    [table] => info
    [name] => lname
    [len] => 60
    [precision] => 0
)

关于python - 从查询中获取列表列名称+数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109042/

相关文章:

python - Django:1045,“用户访问被拒绝

php使用ceil函数在多列中显示数组数据

php - 在 Facebook 应用查询中添加用户数据未运行

php - 在 Linux 上使用 PHP 将元数据或文本注入(inject) WMV

python - Objective-C 中非常慢的两个和解决方案的变体

python - 如何将unicode字符串拆分为列表

python - 我如何要求对/admin 路径下的任何内容进行身份验证?

Java Xuggler 元数据章节列表 MP4/M4V 视频

google-app-engine - 增加新创建的网站上的流量以及如何在谷歌搜索之上移动它

javascript - 在 JS 或 Python 中操作颜色