class Parent(db.Model):
id = db.Column(db.Integer, primary_key=True)
class Child(db.Model):
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))
parent = Parent()
db.session.add(parent)
child = Child()
child.parent_id = parent.id
db.session.add(child)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
我想INSERT到两个parent及child表考虑到一个会话中parent_id必须包含在该child表中.在我创建child对象的那一刻,parent.id是None.
我怎样才能做到这一点?
我们将所有基础设施迁移到Google Kubernetes Engine(GKE) - 我们目前拥有50多台具有大量API,服务,Web应用程序,数据库服务器等的AWS机器.
由于我们已经将所有东西都停靠,现在是时候开始将所有东西都移到GKE了.
我有一个问题可能听起来太基本,但我已经在网上搜索了一个星期,并没有找到任何合理的帖子
直截了当,以下哪种方法更好,为什么:
拥有多个机器类型的多个节点池,并始终指定应在哪个池中完成每个部署; 要么
拥有一个包含大量机器的单个池,让Kubernetes调度程序完成工作,而不必担心我的部署将在何处完成; 要么
拥有BIG机器(在多个区域中提高集群的可用性和弹性)并让Kubernetes在那里部署所有内容.
我有下表:
column1 column2 column3
3 2 0
5 9 2
1 4 6
Run Code Online (Sandbox Code Playgroud)
当我运行以下代码时:
SELECT
id_function = @param,
MIN(t1.column1) AS c1min,
MAX(t1.column2) AS c2max,
MIN(t1.column3) AS c3min
FROM
table1 (NOLOCK) AS t1
WHERE
t1.id = @param
Run Code Online (Sandbox Code Playgroud)
我明白了:
c1min c2max c3min
1 9 0
Run Code Online (Sandbox Code Playgroud)
我的问题是c3min必须是大于零的最小值.我需要的结果应该是:
c1min c2max c3min
1 9 2
Run Code Online (Sandbox Code Playgroud)
没有使用subselect有没有办法做到这一点?任何帮助将不胜感激.
谢谢!
我有一个简单的连接表,在SQL Server中有两个id列.有没有办法按照插入的确切顺序选择所有行?
如果我尝试创建SELECT*,即使我没有指定ORDER BY子句,也不会按插入顺序返回行,而是按第一个键列排序.
我知道这是一个奇怪的问题,但这个表非常大,我需要确切地检查一个奇怪的行为何时开始,不幸的是我的表中没有时间戳列.
更新#1
我将尝试解释为什么我说当没有ORDER BY子句的SELECT*FROM表时,行不会以'自然'顺序返回.
我的桌子是这样的:
id1 id2
---------------
1 1
2 2
3 3
4 4
5 5
5 6
... and so on, with about 90.000+ rows
Run Code Online (Sandbox Code Playgroud)
现在,我不知道为什么(可能是一个软件错误插入这些行),但我的表有450万行,看起来像这样:
id1 id2
---------------
1 1
1 35986
1 44775
1 60816
1 62998
1 67514
1 67517
1 67701
1 67837
...
1 75657 (100+ "strange" rows)
2 2
2 35986
2 44775
2 60816
2 62998
2 67514
2 67517
2 67701
2 67837
...
2 …Run Code Online (Sandbox Code Playgroud) 假设我创建了一个这样的文档:
PUT idx/type/1
{
"the_field": [1,2,3]
}
Run Code Online (Sandbox Code Playgroud)
我可以使用GET/idx/type/1检索我的文档:
{
"_index": "idx",
"_type": "type",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"the_field": [
1,
2,
3
]
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我想检查字段"the_field"是否包含值2.我知道我可以使用term子句,但我需要使用过滤器脚本来检查这个,所以我试过:
POST /idx/typ/_search
{
"query": {
"match_all": {}
},
"filter": {
"script": {
"script": "doc['the_field'].values.contains(2)"
}
}
}
Run Code Online (Sandbox Code Playgroud)
并没有得到任何结果:
{
"took": 6,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
Run Code Online (Sandbox Code Playgroud)
要测试我的mevl脚本语法是否正确,我尝试这样做:
POST /idx/type/_search
{
"query": {
"match_all": {} …Run Code Online (Sandbox Code Playgroud) users我和表之间有一个简单的 m2m 关系roles:
users_roles = db.Table('users_roles',
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
db.Column('role_id', db.Integer, db.ForeignKey('roles.id')),
db.Column('is_primary', db.Boolean)
)
class User(db.Model):
__tablename__ = 'users'
id = db.Column('id', db.Integer, primary_key=True)
roles = db.relationship('Role', secondary=users_roles, lazy='dynamic', backref=db.backref('users', lazy='dynamic'))
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column('id', db.Integer, primary_key=True)
users = db.relationship('User', secondary=users_roles, lazy='dynamic', backref=db.backref('roles', lazy='dynamic'))
Run Code Online (Sandbox Code Playgroud)
要将记录添加到users_roles表中,我必须执行以下操作:
role = Role.get(1)
user = User()
user.roles.append(role)
db.session.add(user)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
没关系,但我is_primary在users_roles表中有一列也应该填充。
我更改了代码以使用关联对象模式,如 SQLAlchemy 文档中所述。
现在我的代码如下所示:
class User(db.Model):
__tablename__ = 'users' …Run Code Online (Sandbox Code Playgroud) var autocomplete;
function initialize() {
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')), {
types: ['address']
});
google.maps.event.addListener(autocomplete, 'place_changed', function() {
fillInAddress();
});
}
function fillInAddress() {
var place = autocomplete.getPlace();
/* need to get the neighborhood place_id here */
}
Run Code Online (Sandbox Code Playgroud)
我的place对象是一个完整的地址,我需要的是place_id这个地址的特定组成部分:neighborhood.
我尝试使用latlng我的place对象的进行反向地理编码并通过neighborhood(https://maps.googleapis.com/maps/api/geocode/json?latlng=xxx,yyy&result_type=neighborhood)过滤,但它返回多个结果和最终多个(和不正确的)社区。
反正有没有得到place_id邻里的?
pagination:
limit:
default: 10
min: 0
max: 50
current: default
Run Code Online (Sandbox Code Playgroud)
该current节点应具有与该节点相同的值default?(在这种情况下为10)。使用YAML是否可以做到这一点?
# main.py
from flask import Flask, jsonify
from flask.ext.cors import CORS
from shared.database import db
from src import controllers
import os
app = Flask(__name__)
cors = CORS(app, allow_headers='Content-Type')
app.register_blueprint(controllers.api)
if (os.getenv('SERVER_SOFTWARE') and os.getenv('SERVER_SOFTWARE').startswith('Google App Engine/')):
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+gaerdbms:///gaiapro_api_dev?instance=dev-gaiapro-api:gaiapro-sql'
else:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqldb://root@127.0.0.1/gaiapro_api_dev'
app.config['DEBUG'] = True
db.init_app(app)
# shared/database.py
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# src/controllers/__init__.py
from flask import Blueprint, jsonify, request
from src import models
from src import views
from shared.helpers import *
api = Blueprint('api', __name__)
@api.route('/test') …Run Code Online (Sandbox Code Playgroud) 当用户从一个特定页面移动到另一个页面时,我在 Rails 应用程序中使用sidekiq异步执行SQL Server数据库中的存储过程。
问题是存储过程最多需要 4 分钟才能完成,sidekiq返回超时消息(然后重试)。
我不想在database.yml 中更改我的应用程序的全局数据库超时设置(我什至不知道它是否会解决,但我不能这样做)。
有什么方法可以告诉sidekiq我的方法可能需要很长时间然后停止出现超时错误?
我真的很感激任何帮助。
更新 #1
2013-06-03T17:14:18Z 6136 TID-1ac4ik GeneratePropertyProfile JID-de571df94f21b9159c74db6b 信息:开始
2013-06-03T17:19:03Z 6136 TID-1ac4ik GeneratePropertyProfile JID-de571df94f21b9159c74db6b 信息:失败:285.218 秒
2013-06-03T17:19:03Z 6136 TID-1ac4ik 警告:{"retry"=>true,"queue"=>"default","class"=>"GeneratePropertyProfile","args"=>[{"id "=>41915658}], "jid"=>"de571df94f21b9159c74db6b", "error_message"=>"TinyTds::Error: Adaptive Server 连接超时: EXEC gaiainc.sp_wait", "error_class"=>"ActiveRecord::StatementInvalid" , "failed_at"=>2013-06-03 17:19:03 UTC, "retry_count"=>0}
2013-06-03T17:19:03Z 6136 TID-1ac4ik 警告:TinyTds::Error:Adaptive Server 连接超时:EXEC gaiainc.sp_wait
更新 #2
我让它在不改变我的database.yml 的情况下工作。但是,我必须在我的 initializers/sidekiq.rb 中添加以下代码:
Sidekiq.configure_server do |config|
ActiveRecord::Base.connection.disconnect!
ActiveRecord::Base.configurations[Rails.env]['timeout'] = 300000
ActiveRecord::Base.establish_connection
end
Run Code Online (Sandbox Code Playgroud)
我知道这是一个丑陋的解决方案,但我没有时间找到另一个解决方案来使其工作。如果有人有更干净的解决方案,请回复此主题。
谢谢!
flask ×3
python ×3
sqlalchemy ×3
sql-server ×2
google-maps ×1
kubernetes ×1
sidekiq ×1
sql ×1
t-sql ×1
yaml ×1