python - 从字典键更新 MySQL 行标题 (Python)

标签 python mysql variables dictionary

我在 Python 2.x 中编译了以下脚本,用于递归搜索目录并针对找到的每个 JPEG,解析出元数据并将其放入字典中。目前,输出只是打印到控制台:-

import os
import fnmatch
import pyexiv2

matches = []
dict1 = {}

# The aim of this script is to recursively search across a directory for all
# JPEG files. Each time a JPEG image is detected, the script used the PYEXIV2
# module to extract all EXIF, IPTC and XMP data from the image. Once extracted
# the key (ie. "camera make" is generated and it's respective value
# (ie. Canon) is then added as the value in a dictionary.

for root, dirnames, filenames in os.walk('C:\Users\XXX\Desktop'):
  for filename in fnmatch.filter(filenames, '*.jpg'):
      matches.append(os.path.join(root, filename))

for entry in matches:
    metadata = pyexiv2.ImageMetadata(entry)
    metadata.read()
    keys = metadata.exif_keys + metadata.iptc_keys + metadata.xmp_keys
    for key in keys:
        dict1[key] = metadata[key].raw_value

    print entry
    print str(dict1)

我要做的是将结果输出到 MySQL 数据库。现在,我的问题是我没有不确定的元数据标题列表,实际上我一直在努力找到一个,因此,对于我的表行标题,我正在寻找比较字典键中的每个值(即日期) taken, make, model 等...),如果它不存在于表中,则将其作为标题添加到我的表中,然后将 EXIF 数据(键值)输入到相应的列中.我以前通过 Python 玩过 MySQL,但从未比较过行标题并从变量动态创建新行标题。

谁能指出我正确的方向?

最佳答案

不是在 MySQL 表中添加新数据键作为新列,而是创建一个包含三列的固定单个表 filedata_namedata_value然后您可以为每个文件提供动态数据。

然后您可以轻松地查询表格,例如

select file from file_data where data_name = 'Serial' and data_value = 'ABCDE'

对于多字段匹配,您可以进行自连接,例如

SELECT * from data t1 JOIN data t2 on t1.file_name = t2.file_name and t1.data_name = "data1" and t1.data_value="value1" and t2.data_name = "data2" and t2.data_value="value2" 

或者您可以继续动态地将列附加到 MySQL 表,例如

ALTER TABLE data ADD Serial VARCHAR(60);

您可以使用

获取现有的列名
SHOW COLUMNS FROM `data`; 

因此,每次您看到一个新的数据字段时,都将其添加为列。

关于python - 从字典键更新 MySQL 行标题 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724944/

相关文章:

python - 在代码中查找 numpy RuntimeWarning 的位置

Python - 多处理的奇怪行为 - 连接不执行

python - re.RegexObject 不存在(引发 AttributeError)

mysql - SQL - 聚合除组之外的所有内容

Python arcpy.mapping 并刷新文档

mysql - SQL Join - 根据成绩类型计算加权学生成绩

mysql - 在内存表中缓存项目 ID - 好/坏?

string - 操作或拆分字符串

variables - 是否可以在 SASS 每个循环中动态使用变量名?

c - 无法理解表达式如何变得错误