小编Geo*_*lis的帖子

SQLALCHEMY:如何在flask_sqlalchemy-SQLalchemy 中使用@events.listens_for

我需要一些帮助来自动化 sqlalchemy 中的一些任务。当新用户在我的网站上注册时,我需要添加 5 名人员。

我想使用 sqlalchemy,events因为如果我可以让它工作,它将在以后派上用场用于其他自动化。

我正在关注 Miguel Grinberg 先生关于如何制作烧瓶应用程序和定义我的模型(db.Model not Base)的教程。

我读到要使用@event.listens_for(User.__table__, "after_insert")我必须使用声明性基础。有没有解决的办法?我的模型结构涉及近 15 个表!

  class User(db.Model):
        __tablename__ = "user"
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        email = db.Column(db.String(64), unique=True, index=True)
        username = db.Column(db.String(64), unique=True, index=True)
        password_hash = db.Column(db.String(128))
        store = db.relationship('Store', uselist=False, backref="user")



@event.listens_for(User.__table__, "after_insert")
def add_personnel(*args, **kwargs):
    for i in range(5):
        db.session.add(Personnel,store_id = User.query.last().id)
    db.session.commit()
    return None

class Personnel(db.Model):
    __tablename__ = "personnel"
    id = db.Column(db.Integer, primary_key=True)
    store_id = db.Column(db.Integer, db.ForeignKey('store.id'))
    first_name …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask-sqlalchemy

8
推荐指数
2
解决办法
1万
查看次数

如何从 jupyter 笔记本中启动 jupyter 笔记本终端?

在右上角访问笔记本服务器的位置。我可以通过单击“新建”和“终端”来创建终端。

新按钮

如何在该服务器上运行的 Jupyter 笔记本中执行此操作?意思是在单元格中运行一些命令。

python jupyter-notebook

6
推荐指数
0
解决办法
2万
查看次数

当我不希望 Luigi 输出文件但显示任务已完成时该怎么办?

当使用 Luigi 循环文件时,我不会强制保存空文件只是为了表明任务已完成,并让下一个任务检查 txt 中是否有任何行,等等。

如何在不输出文件的情况下让任务显示它成功(即运行方法按预期工作)?我在这里错过了什么吗?

python pipeline luigi

6
推荐指数
2
解决办法
3862
查看次数

如何根据同一模型的其他两列设置sqlalchemy中一列的值?

我正在构建一个 Web 应用程序。我有以下型号。

class Staff(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    store_id = db.Column(db.Integer, db.ForeignKey('store.id'))
    first_name = db.Column(db.String(64))
    last_name = db.Column(db.String(64))
    username = db.Column(db.String(64))
    cell_phone = db.Column(db.Integer)
    email = db.Column(db.String(64))
    position = db.Column(db.String(64))
    # add average salary value based on payroll
Run Code Online (Sandbox Code Playgroud)

我想要的usernamefirst_name+last_name与用户键入在形式他的姓和名。

我知道如何使用@db.event.listens_for(Staff, "after_insert")等并像这样更新它。但是有没有办法在模型中定义一些东西,让它在没有触发器的情况下自动完成?`

python sqlalchemy flask-sqlalchemy

3
推荐指数
1
解决办法
2770
查看次数

为什么这两个场景不会返回相同的输出?

你好,下面有两个相同功能的运行.他们应该AB回答作为答案.但只有第一个.全局变量发生了什么?

txt=''

def test():
    global txt
    txt+='A'
    print(txt)
    return 'B'
tmp=test()
print('tmp: ', tmp)
txt+=tmp
print(txt)
Run Code Online (Sandbox Code Playgroud)

第二轮

txt=''

def test():
    global txt
    txt+='A'
    print(txt)
    return 'B'
print(txt)
txt+=test()
print(txt)
Run Code Online (Sandbox Code Playgroud)

编辑

证明

python

1
推荐指数
1
解决办法
52
查看次数

如何覆盖 Chrome 的 Selenium Headless 用户代理?

我有以下代码

import sys
from os import path
import os
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class DDDDDD(object):
    def __init__(self, date=None, path_to_save=None, chomedriver_exe_path=None, pred=True):
        self.pred = pred
        if chomedriver_exe_path is None:
            home = os.path.expanduser('~')
            self.chomedriver_exe_path = home + '/Downloads/chromedriver.exe'
        else:
            self.chomedriver_exe_path = chomedriver_exe_path
        self.driver = None

    def setup_driver(self):
        user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'
        chrome_options = Options()
        chrome_options.add_argument("headless") # …
Run Code Online (Sandbox Code Playgroud)

python browser selenium

1
推荐指数
1
解决办法
5295
查看次数