小编jul*_*enc的帖子

主键上的Flask SQLAlchemy NOT NULL约束失败

我正在尝试在SQLite中创建一个数据库,该数据库有两个表,一个用于机场列表,另一个表用于这些机场对之间的行程列表.我把它建立为一种自我参照,多对多的关系:

class Trips(db.Model):

    __tablename__ = 'trips'

    id = db.Column(db.Integer, primary_key=True)
    airport_from = db.Column(db.Integer, db.ForeignKey('airport.id'))
    airport_to = db.Column(db.Integer, db.ForeignKey('airport.id'))
    price = db.Column(db.Float)
    date = db.Column(db.Date)

class Airport(db.Model):

    __tablename__ = 'airport'

    id = db.Column(db.Integer, primary_key=True)
    iata = db.Column(db.String(8), index=True, unique=True)
    name = db.Column(db.String(120), index=True, unique=True)
    city = db.Column(db.String(120))
    region = db.Column(db.String(120))
    country = db.Column(db.String(120))

    flying_from = db.relationship('Trips', backref='end', primaryjoin=(id==Trips.airport_to))
    flying_to = db.relationship('Trips', backref='start', primaryjoin=(id==Trips.airport_from))

    def __repr__(self):
        return '<Airport: {0}; IATA: {1}>'.format(self.name, self.iata)
Run Code Online (Sandbox Code Playgroud)

当我打开我的Python shell并导入这些模型时,我让SQLAlchemy会话添加Airport对象并提交就好了,但当我做类似的事情时:

>>> t = models.Trips(airport_from=3, airport_to=4, price=230.0)
>>> db.session.add(t) …
Run Code Online (Sandbox Code Playgroud)

python sqlite sqlalchemy flask flask-sqlalchemy

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

将 self 参数命名为其他名称

在 Python 中,以下代码是有效的:

class A:

    def __init__(me):
        me.foo = 17

    def print_foo(myself):
        print(myself.foo)

    def set_foo(i, v):
        i.foo = v
Run Code Online (Sandbox Code Playgroud)

您可能已经注意到,参数在方法中self命名,在方法中命名,在方法中命名。me__init__myselfprint_fooiset_foo

是否存在将self参数命名为其他名称self有用的情况?如果不是,为什么 Python 允许这样做,因为这肯定是一种编写难以阅读和维护的代码的方式,而且也是混乱的根源?

python self

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

操作无效:float64类型的移位

<<在Golang中使用shift运算符面临一个奇怪的问题.在我的最终代码中,移位值将是两个整数的绝对值.但是,Go包只定义了值的Abs函数float64,所以我需要转换参数来使用它,然后将结果转换回来uint.

最后,这个值将被用作float64参数,因此我将其转换回来float64.

问题是返回值的转换似乎不像我预期的那样工作......

var test float64

// all the following lines are working as expected
test = float64(1 << 10)
test = float64(1 << uint(10))
test = float64(1 << uint(float64(11-1)))
test = float64(1 << uint(-float64(1-11)))

// but this one does not: error at compilation
test = float64(1 << uint(math.Abs(10)))
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

invalid operation: 1 << uint(math.Abs(10)) (shift of type float64)
Run Code Online (Sandbox Code Playgroud)

但是,似乎只有施法操作才有效:

var test = uint(math.Abs(10))
fmt.Println(reflect.Kind(test))
// uint32
Run Code Online (Sandbox Code Playgroud)

这是一个Golang问题吗?我没有在规格中找到的行为?我根本不懂的正常行为? …

bit-shift go

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

具体化最佳实践验证空场

我用这个表格

<div class="row">
    <form class="col s12">
        <div class="row">
            <div class="input-field col s12">
                <input id="email2" type="email" class="validate">
                <label for="email2" data-error="wrong" data-success="right">Email</label>
            </div>
            <div class="input-field col s12">
                <input id="example" name="example" type="text" class="validate" required="" aria-required="true">
                <label for="example" data-error="wrong" data-success="right">Field</label>
            </div>
        </div>
    </form>
</div>
Run Code Online (Sandbox Code Playgroud)

邮件领域还可以.如果我在不正确的邮件地址发布错误消息出现.

示例字段不起作用.我会检查字段是否为空,然后显示错误.

怎么了?

html validation html5 materialize material-design

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

File.WriteAllText和File.Copy问题

我正在创建一个文件File.WriteAllText,使用File.Copy方法将相同的文件复制到另一个目录.但由于某种原因,它不会在源目录中创建文件,但会将其复制到目标目录.

可能是什么问题呢?请告诉我.

File.WriteAllText(sourceFilePath, Contents.ToString());
File.Copy(sourceFilePath, destFilePath);
Run Code Online (Sandbox Code Playgroud)

c#

5
推荐指数
2
解决办法
2200
查看次数

如何在HTTPS下的django重定向中设置cookie?

我正在制作一个应用程序(如单点登录):

  1. 用户请求登录服务 A
  2. 从db获取用户名/密码并通过A的web_api登录A
  3. 制作一个 HttpResponseRedirect,设置 cookie 并返回给用户。

用户<==>应用<==>服务(https)

整个过程在HTTP中很好。但是当服务 A 在 HTTPS 下时,它就不起作用了。当用户被重定向到 A 网站时,步骤 3 中设置的 cookie 将消失。

response = HttpResponseRedirect('https://xxxx/service')
response.set_cookie(key=cookie.name, value=cookie.value, 
domain=cookie.domain, path=cookie.path, expires=cookie.expires)
Run Code Online (Sandbox Code Playgroud)

django cookies https

5
推荐指数
0
解决办法
2228
查看次数

Ajax 请求在 Chrome 上永远挂起

我在使用 Chrome 时遇到了一个随机问题(Linux 上的 v60.0.3112.101,但最终用户在其他系统的生产中也重现了这一问题)。有一个页面包含歌曲列表,单击其中任何歌曲都会触发 ajax 请求以获取服务器上的文件(除其他外)。

经过一定次数的“点击”(从来没有相同的次数,从来没有在同一个文件上),应该获取资源的ajax请求永远显示为“待处理”(我已经等待了30多分钟才完成) )。

在此输入图像描述

在开发人员工具面板的“计时”选项卡中,请求显示为“停滞”,实际上,Nginx 日志(我们将其用作反向代理)和后端应用程序本身显示该请求从未到达服务器。

在此输入图像描述

我尝试了几件事但没有成功:

  • 禁用“预测服务以更快地加载页面”
  • 在每个请求上添加随机 uuid 以确保不使用缓存
  • 更新jquery和soundmanager2(这是启动请求的库)
  • 启动 Chrome 时不带扩展程序

我还尝试从开发人员工具控制台重新运行请求,它也处于待处理状态。

url = "/api/download/songs/7969/28962/28962_original.mp3?download_key=81b285e61f7880a0a07a977dbc47b78a1d57e3690263a646da65a261957f979a&r=" + Math.random();
$.get(url);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这个问题在 Firefox 上似乎没有发生。

不幸的是,我无法向您展示比这更多的代码。

这是 Chrome 的已知错误吗?有任何已知的解决方法吗?

javascript ajax google-chrome

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

如何使用angularjs从表中获取行数据

我是angularjs的新手.我正面临一个问题.我有一个带一个单选按钮的桌子.当用户选择任何单选按钮并单击提交按钮时,我需要显示所选行的详细信息.

Html代码:

<table>
    <thead>
        <tr>
            <th>Select</th> 
            <th>First Name</th> 
            <th>Last Name</th> 
            <th>Unique Reference ID</th> 
            <th>Country</th> 
            <th>Branch</th> 
            <th>Card No</th> 
       </tr>
    </thead>

    <tr ng-repeat="d in Employees">
        <td><input type="radio"></td>
        <td>{{d.fname}}</td>
        <td>{{d.lname}}</td>
        <td>{{d.uniqueid}}</td>
        <td>{{d.country.name}}</td>
        <td> {{d.branch.name}}</td>
        <td>{{d.cardno}}</td> 
    </tr>
</table>

<table>
    <tr>
        <td><input type="button" value="Edit" ng-click="Edit()"></td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

控制器代码:

$scope.Edit=function()
{
    //need id of selected row ?
};
Run Code Online (Sandbox Code Playgroud)

angularjs

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

使用 INSERT IGNORE 检索警告

我需要在 MySQL 表中插入很多值。其中一些可能会导致错误,但我仍然希望插入有效的。因此,我正在使用INSERT IGNORE查询。

query := "INSERT IGNORE INTO mytable "
query += "(uniquekey, someotherfield) "
query += "VALUES "

var params []interface{} 

for _, element := range elements {
    query += "(?, ?),"
    params = append(params, element.UniqueKey, element.SomeOtherField)
}

_, err := db.Exec(query[:len(query)-1] + ";", params...)
Run Code Online (Sandbox Code Playgroud)

如果我在终端中运行此查询,我会将被拒绝的行作为警告:

 Warning | 1062 | Duplicate entry '4' for key 'uk-uniquekey'
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用 Go 检索它们呢?

使用返回的Result对象,我可以获得受影响的行数(从而找到被拒绝的行数),但我需要一种方法来清楚地识别这些行。

另外,我有很多行要插入,我不想INSERT对每一行都使用查询。

这个问题有什么好的解决方案吗?


更新

我想过使用这样的单个准备好的查询:

stmt, _ := db.Prepare("INSERT INTO mytable (uniquekey, someotherfield) …
Run Code Online (Sandbox Code Playgroud)

mysql go

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

错误 1067 (42000):“end_time”的默认值无效

CREATE TABLE seckill (
  `seckill_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '????id',
  `name` VARCHAR(120) NOT NULL COMMENT '????',
  `number` INT NOT NULL COMMENT '????',
  `start_time` TIMESTAMP NOT NULL COMMENT '????',
  `end_time` TIMESTAMP NOT NULL COMMENT '????',
  `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '????',
  PRIMARY KEY (seckill_id),
  KEY idx_start_time(start_time),
  KEY idx_end_time(end_time),
  KEY idx_create_time(create_time)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='?????';
Run Code Online (Sandbox Code Playgroud)

当我尝试使用上一个查询创建表时,这是我得到的错误:

错误 1067 (42000):“end_time”的默认值无效

我该如何解决这个问题?

mysql

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