def write_to_db(table, rows): total = len(rows) batch_size = 500 i = 0 while total > 0: y = i * batch_size to_insert = rows[y: y + batch_size] db.table(table).insert(to_insert) total -= batch_size i += 1
async def _(msg, ctx: Context): m = StartUpMachine.from_user_id(ctx.user_uid) m.reset() m.sent_start() q = Query() db.table("login_data").upsert({"user_id": ctx.user_uid}, q.user_id == ctx.user_uid) await ctx.reply("""Введите логин и пароль от Сетевого города. Формат: <Логин>:<Пароль>""") m.save()
def handle(message, state): chat_id = message.chat.id with error_handler(chat_id=chat_id): result = db.table("users").search(get_user_query(chat_id)) if result: user = m.User(**result[0]) else: user = m.User.new(chat_id) d.UserDispatcher(user, message, bot).transit(state) db.table("users").upsert(user.dict(), get_user_query(chat_id))
async def dnevnik(msg: Message, ctx: Context): api = NetSchoolAPI("http://sgo.cit73.ru") q = Query() user = db.table("login_data").search(q.user_id == ctx.user_uid)[0] await api.login( user["login"].split(":")[0], user["login"].split(":")[1], user["school"], city=user["city"], oo=user["oo"], ) data = await api.get_diary() df = pd.DataFrame(data={}) await ctx.reply("Ваш класс: ") for day in data["weekDays"]: date = dateutil.parser.parse(day["date"]).weekday() for lesson in day["lessons"]: try: hw = lesson["assignments"][0]["assignmentName"] mark = lesson["assignments"][0]["mark"] except KeyError: hw = None mark = None subject = lesson["subjectName"] print(lesson["room"]) room = [int(s) for s in lesson["room"].split("/") if s.isdigit()][0] df = df.append( { "Date": date, "Homework": hw, "Subject": subject, "Mark": mark, "Room": room }, ignore_index=True) df = df.set_index("Date") for name, group in df.groupby("Date"): msg_ = "Уроки на {}\n".format(weektorus[name]) for row in group.iterrows(): data = row[1] msg_ += "{} / {} - {}\n".format(data["Subject"], int(data["Room"]), data["Homework"]) await ctx.reply(msg_)
async def asd(msg: Message, ctx: Context): m = StartUpMachine.from_user_id(ctx.user_uid) if m.current_state == StartUpMachine.not_started: return elif m.current_state == StartUpMachine.entering_school: q = Query() db.table("login_data").update(set_("school", msg.text), q.user_id == ctx.user_uid) await ctx.reply( "Готово! Теперь вы можете написать /dnevnik для того чтобы посмотреть дневник" ) m.reset() elif m.current_state == StartUpMachine.entering_login: q = Query() db.table("login_data").update(set_("login", msg.text), q.user_id == ctx.user_uid) await ctx.reply("Введите Город:") await ctx.reply("Все возможные города:\n" + "\n".join( await NetSchoolAPI("http://sgo.cit73.ru").get_form_data("cities"))) m.cycle() elif m.current_state == StartUpMachine.entering_city: q = Query() db.table("login_data").update(set_("city", msg.text), q.user_id == ctx.user_uid) await ctx.reply("Введите ОО:") await ctx.reply("Все возможные ОО:\n" + "\n".join(await NetSchoolAPI( "http://sgo.cit73.ru").get_form_data("funcs"))) m.cycle() elif m.current_state == StartUpMachine.entering_oo: q = Query() db.table("login_data").update(set_("oo", msg.text), q.user_id == ctx.user_uid) await ctx.reply("Введите Школу:") await ctx.reply("Все возможные школы:\n" + "\n".join(await NetSchoolAPI( "http://sgo.cit73.ru").get_form_data("schools"))) m.cycle() m.save()
def worker(): start_time = datetime.datetime.now().replace(second=0, microsecond=0).timestamp() while True: logger.info(f'starting worker cycle') for user in [m.User(**x) for x in db.table("users").all()]: with error_handler(chat_id=user.chat_id): if user.reminder_morning and user.reminder_morning.is_notify_needed( ): logger.info(f'notifying morning {user}') d.UserDispatcher(user, None, bot).transit(m.State.NOTIFY_MORNING) db.table("users").upsert(user.dict(), get_user_query(user.chat_id)) if user.reminder_evening and user.reminder_evening.is_notify_needed( ): logger.info(f'notifying evening {user}') d.UserDispatcher(user, None, bot).transit(m.State.NOTIFY_EVENING) db.table("users").upsert(user.dict(), get_user_query(user.chat_id)) if user.reminder_forgot and user.reminder_forgot.is_notify_needed( ): logger.info(f'notify forgot {user}') if user.state == m.State.STOP: logger.info( f'special case: stop timer that was set after stopping reminders' ) user.reminder_forgot.reset() else: d.UserDispatcher(user, None, bot).transit(m.State.NOTIFY_FORGOT) db.table("users").upsert(user.dict(), get_user_query(user.chat_id)) time.sleep(60.0 - ((time.time() - start_time) % 60.0))
print(f'put result {i} - {e2 - s2} - total: {e2 - s1} - {total}') i += 1 # In[1]: from db import db from pymongo import MongoClient from datetime import datetime # In[2]: get_ipython().run_line_magic('load_ext', 'autotime') # In[3]: db.table('titles').count() # In[3]: client = MongoClient() mdb = client.fever collection = mdb['titles'] # In[4]: h = [ 'Nikolaj Coster-Waldau', 'Fox Broadcasting Company', 'Roman Atwood', 'Adrienne Bailon', 'American', 'Israeli', 'Prisoners War', 'number two', 'Billboard Hot 100', '2003', 'Neal Schon', '1954', 'Boston Celtics', 'Tetris', 'millions', 'Cyndi Lauper', 'Grammy Awards', '1985', 'Ryan Gosling', 'Africa', 'Bloomington', 'Indiana', 'Ryan Seacrest',
def select_table(table): table = table or "__default__" return db.table(table)
def _get_user(message: telebot.types.Message): result = db.table("users").search(get_user_query(message.chat.id)) if not result: return None return m.User(**result[0])
from db import db dishes = db.table('dishes', db.Column('order_id', db.Integer, db.ForeignKey('order.id')), db.Column('menu_id', db.Integer, db.ForeignKey('menu.id'))) class OrderModel(db.Model): __tablename__ = 'order' id = db.Column(db.Integer, primary_key=True) uid = db.Column(db.Integer, db.ForeignKey('user.id')) originalAmount = db.Column(db.Float(precision=2)) finalAmount = db.Column(db.Float(precision=2)) # TODO menu list menus = db.relationship('Menu', secondary=dishes, backref=db.backref('orders', lazy='dynamic')) status = db.Column(db.String(10)) time = db.Column(db.String(10)) phone = db.Column(db.String(20)) deliverAddress = db.Column(db.String(200)) def __init__(self, oid, uid, originalAmount, finalAmount, status, time, phone, deliverAddress): self.id = oid self.uid = uid self.originalAmount = originalAmount self.finalAmount = finalAmount
import emoji import random import hashlib from flask_restful import Resource, reqparse from generator import KeyGenerator from tinydb import Query from db import db emoji_list = emoji.EMOJI_UNICODE.keys() table = db.table('name') def generate_emojis(size=10): emojis = random.sample(emoji_list, size) return emoji.emojize("".join(emojis)) def get_private_key_from_emojis(emojis): kg = KeyGenerator() kg.seed_input(emojis) key = kg.generate_key() return key def get_pk_hash(private_key): return hashlib.sha256(private_key.encode()).hexdigest() nameParser = reqparse.RequestParser() nameParser.add_argument('name', type=str)