IT记录

日常学习、工作的点滴记录


  • 首页

  • categories

  • archive

  • tags

  • 搜索

Python 3.8+Jupyterlab3.0下pymysql连接设置

发表于 2021-10-09   |   分类于 Jupyterlab   |   暂无评论

Python 3.8+Jupyterlab2.2下pymysql连接设置为

db = pymysql.connect("localhost","user","paswword","gaokao" )

连接正常
转为Jupyterlab3.0下,则提示:

__init__() takes 1 positional argument but 5 were given

改为

db = pymysql.connect(host = "localhost",user = "user",password = "password",database = "gaokao" )

则正常。

Python使用collections找出列表list中的重复元素

发表于 2021-10-09   |   分类于 Python   |   暂无评论

collections是Python内建的一个集合模块,提供了许多有用的集合类。

cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

查询大学信息中名称重复的学校

from collections import Counter
import pymongo
​
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["gaokao"]
mycol = mydb["college"]
m_name  =[]
for x in mycol.find({'code':{'$exists':'true'}},{'_id':0,'code':1,'name':1}):
    #print(x)
    m_name.append(x['name'])
#print(m_name)
b = dict(Counter(m_name))
print ([key for key,value in b.items()if value > 1])  #只展示重复元素
print ({key:value for key,value in b.items()if value > 1}) 

PyMongo使用push添加记录

发表于 2021-10-09   |   分类于 Python , 数据库   |   暂无评论
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["gaokao"]
mycol = mydb["qiangji"]
m_name = '山东大学'
m_code = 'A422'
m_year = '2020'
myquery = {'code':m_code}
mycol.update_one(myquery,{'$push':{m_year:m_mg}})

其中:m_year为collections中type为Array的记录。

Python使用MongoDB及其GridFS进行文档管理

发表于 2021-10-09   |   分类于 Python , 数据库   |   暂无评论

MongoDB内置一套文件系统名为GridFS(Grid File System),我们可以使用它来存储大于16M的文件。

GridFS具有分布式管理文件的能力,可以突破一般文件系统对file的限制,分段存储,不像普通文件系统是整个存储的。这样读取大型文件时就不会占用大量的内存。

GridFS会将文件存储在两个Document里:

Chunks用来存储二进制数据
Files用于存储基本文件信息
gridfs介绍

GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),适合于不常改变但是经常需要连续访问的大文件。GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。

GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中。

其中,files中存储文件的元信息,默认使用集合为fs.files,键定义如下:

_id 主键
length 文件所包含的字节数
chunkSize 组成文件的每个块的大小,单位为字节,默认值为256KB,可调整
uploadDate 文件被上传到GridFS的日期
md5 文件内容的MD5校验值,该值由服务器端测试得到
每一个文件存储的各个chunk的files_id相同

import pymongo
from gridfs import GridFS
from bson.objectid import ObjectId
import os

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["gaokao"]
mycol = mydb["college"]

UploadCache = "uploadcache"
dbURL = "mongodb://localhost:27017"

#上传文件
def upLoadFile(file_coll,file_name,data_link):
    client = pymongo.MongoClient('mongodb://localhost:27017/')

    db = client["gaokao"]

    filter_condition = {"filename": file_name, "url": data_link}
    gridfs_col = GridFS(db, collection=file_coll)
    file_ = "0"
    query = {"filename":""}
    query["filename"] = file_name

    if gridfs_col.exists(query):
        print('已经存在该文件')
    else:

        with open(file_name, 'rb') as file_r:
            file_data = file_r.read()
            file_ = gridfs_col.put(data=file_data, **filter_condition)  # 上传到gridfs

            print(file_)


    return file_   
# 按文件名获取文档
def downLoadFile(self,file_coll,file_name,out_name,ver):
    client = pymongo.MongoClient(self.dbURL)

    db = client["store"]

    gridfs_col = GridFS(db, collection=file_coll)

    file_data = gridfs_col.get_version(filename=file_name, version=ver).read()

    with open(out_name, 'wb') as file_w:
        file_w.write(file_data)

# 按文件_Id获取文档       
def downLoadFilebyID(file_coll,_id,out_name):
    client = pymongo.MongoClient('mongodb://localhost:27017/')

    db = client["gaokao"]

    gridfs_col = GridFS(db, collection=file_coll)

    O_Id = ObjectId(_id)

    gf = gridfs_col.get(file_id=O_Id)
    file_data = gf.read()
    with open(out_name, 'wb') as file_w:

        file_w.write(file_data)     


    return gf.filename    
ll = downLoadFilebyID("pdf","5fbf351b62452a56d7d16603","out3.pdf")
print (ll)

pymongo获取查询返回记录数

发表于 2021-10-09   |   分类于 Python , 数据库   |   暂无评论
import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient["gaokao"]
mycol = mydb["qiangji"]
x = mycol.count_documents(myquery)

原先的mycol.find(myquery).count被mycol.count_documents(myquery)替代。

1...1314151617181920212223

一个高端大气上档次的网站

115 文章
5 分类
51 标签
GitHub 知乎 V2EX SF
© 2026 IT记录
Typecho
主题 - NexT.Pisces