我创建了一个classes.py,其中包含用于通过MongoDB和pymongo管理的数据库的类,并带有一些方法,例如:
from pymongo import MongoClient
import pandas as pd
class database:
global Date
Date = 'Date'
global Variable
Variable = 'Variable'
global Value
Value = 'Value'
def __init__(self, name):
self.name = str(name)
self.db = ''
def login(self, address, port, db_user, db_password):
mongo_client = MongoClient(host=str(address),port=int(port),
username=str(db_user),
password=str(db_password))
db_login = mongo_client[self.name]
return db_login
def initialize(self, db_login):
db_login.create_collection('datasets')
def first_last_day_DB(self, db_login, var):
db_name = db_login.name
db_collection = db_login.collection_names()
collection = db_login[db_name][db_collection]
df = pd.DataFrame(list(collection.find({"Variable":'%s' % var}).sort("Date")))
oldest = df.Date[0]
newest = df.Date[len(df)-1]
return oldest, newest
,我想从数据库中提取数据。我加载了一些数据。 但是,如果我拨打电话,例如:
import classes
database_1 = classes.database('DB_name')
db_1 = database_1.login('192.168.1.100',3308,'user','password')
first, last = database_1.first_last_day_DB(db_1, 'variable_name')
我有电话返回的empy数据框。
有人知道为什么会这样吗?
其他操作(登录,初始化,...以及我在同一类中定义的其他方法来更新数据库上的数据)效果很好。