# -*- coding:utf-8 -*-
"""
使用python操作数据库的简单示例。
示例场景:当前已有数据库result_all,包含以md5为主键的文件详细信息。
当前有一批文件md5,需要查询这些文件的其他相关信息,并统计查询数量。
"""
import MySQLdb
def main():
# 打开需要查询的md5,每一行为一个文件md5。
f1 = open('md5.txt', 'r')
# 查询结果写到result文件。
f2 = open('result.txt', 'w+')
# 建立数据库连接对象,传入地址用户名密码及数据库名称,端口默认3306可省略。
conn = MySQLdb.connect(host='xxxxx', user='xxxx', passwd='xxxx', db='xxxx')
# 建立游标对象cur。
cur = conn.cursor()
i = 0
# 按行读取文件md5
md5 = f1.readline()
# 遍历md5.txt文件,直到读取到空行。
while md5 != '':
# 数据库查询语句,该数据库中文件md5的列名为cert_md5,通过占位符和从文件中读取的md5做匹配。
sql = "SELECT file_md5 FROM `result_all` where cert_md5='%s'" % md5.split('\n')[0]
# 执行数据库查询语句
cur.execute(sql)
# 获取所有查询结果
result = cur.fetchall()
# 对获取的结果根据需求做最后的格式化。
data = str(result).split(',')
for d in data:
if len(d) > 20:
d = d.replace(',', '').replace(')', '').replace('(', '').replace('\'', '').replace(' ', '')
# 将查询结果写入到文件中。
f2.write(d + '\n')
i += 1
# 做简单的查询计数,每查询一次count加1。
print(md5.split('\n')[0], '-->ok--count:' + str(i))
# 继续从文件中读取需要查询的md5。
md5 = f1.readline()
# 关闭文件对象和数据库连接对象。
f1.close()
f2.close()
conn.close()
if __name__ == '__main__':
main()
python实现数据库查询的简单示例
于 2016-05-11 17:49:59 首次发布