我试图使用Marshmallow做反序列化和序列化SQLAlchemy对象,但在处理ORM中的Geography字段时遇到问题.
首先是模型:
class Address(db.Model, TableColumnsBase):
__tablename__ = 'address'
addressLine1 = db.Column(String(255), nullable=True, info="Street address, company name, c/o")
addressLine2 = db.Column(String(255), nullable=True, info="Apartment, suite, unit, building floor, etc")
countryCode = db.Column(String(255), nullable=True, info="Country code such as AU, US etc")
suburb = db.Column(String(255), nullable=True, info="Users suburb such as Elizabeth Bay")
postcode = db.Column(String(32), nullable=True, info="Users postcode such as 2011 for Elizabeth Bay")
state = db.Column(String(64), info="State for user such as NSW")
user_presence = one_to_many('UserPresence', backref = 'user', lazy='select', cascade='all, delete-orphan')
location = …Run Code Online (Sandbox Code Playgroud) 在使用heroku redis插件在heroku上运行kue-scheduler时,虽然我可以让kue作业工作,但似乎kue-scheduler需要在heroku redis环境中不允许某些redis配置.有没有人在Heroku环境中成功运行kue-scheduler.这是我的index.js文件的开头:
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');
var kue = require('kue-scheduler')
var queue = kue.createQueue({redis:
'redis://h:***************@ec2-**-19-83-130.compute-1.amazonaws.com:23539'
});
var job = queue.create('test', {
title: 'Hello world'
, to: 'j@example.com'
, template: 'welcome-email'
}).save( function(err){
if( !err ) console.log( job.id );
});
job.log('$Job %s run', job.id);
queue.every('30 seconds', job);
queue.process('test', function(job, done){
test_function(job.data.title, done);
});
function test_function(title, done) {
console.log('Ran test function with title %s', title)
// email send stuff...
done();
}
Run Code Online (Sandbox Code Playgroud)
这是错误.
2016-07-21T00:46:26.445297+00:00 …Run Code Online (Sandbox Code Playgroud) 我正在使用 Flask、SQLAlchemy 构建 API 服务,最近还集成了 Flask-SQLAlchemy 扩展。虽然我可以独立运行应用程序并成功进行 API 调用,但在尝试运行单元测试时遇到了问题。我认为问题在于多次导入 db.Model 类型。
例外是这样的:
Error
Traceback (most recent call last):
File "/Users/james/.pyenv/versions/2.7.10/lib/python2.7/unittest/case.py", line 322, in run
self.setUp()
File "/Users/james/Documents/workspace/trustmile-backend/trustmile/tests/test_users.py", line 28, in setUp
from trustmile.app.users.model import User, ConsumerUser, CourierUser, AuthSession, Location, UserAddress, db
File "/Users/james/Documents/workspace/trustmile-backend/trustmile/app/users/model.py", line 23, in <module>
class User(db.Model, UniqueMixin, TableColumnsBase, References):
File "/Users/james/.virtualenvs/trustmile-api-p2710/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 536, in __init__
DeclarativeMeta.__init__(self, name, bases, d)
File "/Users/james/.virtualenvs/trustmile-api-p2710/lib/python2.7/site-packages/sqlalchemy/ext/declarative/api.py", line 55, in __init__
_as_declarative(cls, classname, cls.__dict__)
File "/Users/james/.virtualenvs/trustmile-api-p2710/lib/python2.7/site-packages/sqlalchemy/ext/declarative/base.py", line 88, in _as_declarative
_MapperConfig.setup_mapping(cls, classname, dict_) …Run Code Online (Sandbox Code Playgroud) 请注意,这不是此问题的副本
我只是想添加到在我的模型中的 one_to_many 关系中定义的列表,如下所示。这是我的模型:
class TrustmileDelivery(db.Model, UniqueMixin, TableColumnsBase):
__tablename__ = 'trustmile_delivery'
articles = one_to_many('Article', backref='delivery', lazy='select')
# Problem with this is getting a cascade error
neighbour = many_to_one('ConsumerUser', backref='trustmile_deliveries', lazy='select')
courier_user = many_to_one('CourierUser', backref='deliveries', lazy='select')
state = db.Column(db.String(255), )
Run Code Online (Sandbox Code Playgroud)
当我尝试通过以下方式创建时:
@classmethod
def create(cls, user, articles):
return TrustmileDelivery(user, articles)
Run Code Online (Sandbox Code Playgroud)
与INIT(..)函数是:
def __init__(self, courier_user, articles):
self.courier_user = courier_user
if len(articles):
self.articles.append(articles)
Run Code Online (Sandbox Code Playgroud)
我得到以下堆栈跟踪:
Traceback (most recent call last):
File "/Users/james/Documents/workspace/trustmile-backend/trustmile/tests/test_deliveries.py", line 66, in test_create_trustmile_delivery
tm_delivery = TrustmileDelivery.create(courier_user, articles)
File …Run Code Online (Sandbox Code Playgroud) 明天宣布解析后,开始迁移到我自己的mongo数据库.
我已完成迁移操作并且数据似乎存在但是任何下划线表都不适用于Mongo shell.我并不特别熟练,但这就是我所看到的:
> show databases
local 0.078GB
test 0.203GB
> use test
switched to db test
> show collections
Chat
ChatStatus
Message
Session
SessionBooking
TrainerProfile
UserFavorite
_Cardinality
_Index
_Installation
_JobSchedule
_JobStatus
_PushStatus
_SCHEMA
_User
system.indexes
> users = db._User.find()
2016-02-09T01:07:31.394+0000 E QUERY TypeError: Cannot call method 'find' of undefined
at (shell):1:18
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它呈现为未定义.非常感谢.
运行PyCharm 4.5.3 Build#141.1899专业版并获得许可.我使用profiler命令运行Flask应用程序,使用类似于以下的配置:
python app.py
Run Code Online (Sandbox Code Playgroud)
看起来像:
def create_app():
app = Flask(__name__, static_folder='static')
app.register_blueprint(
consumer_v1.bp,
url_prefix='/consumer/v1')
return app
app = create_app()
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5001)
Run Code Online (Sandbox Code Playgroud)
当我转到"运行 - >配置文件应用程序"时,我在控制台上看到以下内容:
/Users/james/.virtualenvs/trustmile-api/bin/python /Applications/PyCharm.app/Contents/helpers/profiler/run_profiler.py 127.0.0.1 49537 /Users/james/Documents/workspace/trustmile-backend/trustmile/api_stubs/api_stubs/__init__.py
Starting cProfile profiler
2015-09-01 07:00:25,717 INFO [werkzeug][MainThread] * Running on http://0.0.0.0:5001/ (Press CTRL+C to quit)
2015-09-01 07:00:25,723 INFO [werkzeug][MainThread] * Restarting with stat
2015-09-01 07:00:32,801 INFO [werkzeug][Thread-1] 127.0.0.1 - - [01/Sep/2015 07:00:32] "POST /consumer/v1/account/password HTTP/1.1" 403 -
Snapshot saved to /Users/XXXX/Library/Caches/PyCharm40/snapshots/trustmile-backend5.pstat
Process finished with exit …Run Code Online (Sandbox Code Playgroud) 我有一个使用 cloudformation 中指定的模板定义的 Athena 表:
云信息创建
EventsTable:
Type: AWS::Glue::Table
Properties:
CatalogId: !Ref AWS::AccountId
DatabaseName: !Ref DatabaseName
TableInput:
Description: "My Table"
Name: !Ref TableName
TableType: EXTERNAL_TABLE
StorageDescriptor:
Compressed: True
Columns:
- Name: account_id
Type: string
Comment: "Account Id of the account making the request"
...
InputFormat: org.apache.hadoop.mapred.TextInputFormat
SerdeInfo:
SerializationLibrary: org.openx.data.jsonserde.JsonSerDe
OutputFormat: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
Location: !Sub "s3://${EventsBucketName}/events/"
Run Code Online (Sandbox Code Playgroud)
这运行良好并且可以部署。我还发现我可以根据此文档和此文档创建分区投影
并且可以通过直接创建表来实现这一点,大致如下:
SQL创建
CREATE EXTERNAL TABLE `performance_data.events`
(
`account_id` string,
...
)
PARTITIONED BY (
`day` string)
ROW FORMAT SERDE
'org.openx.data.jsonserde.JsonSerDe'
STORED AS …Run Code Online (Sandbox Code Playgroud) python ×3
sqlalchemy ×3
flask ×1
geoalchemy ×1
heroku ×1
kue ×1
marshmallow ×1
mongodb ×1
postgis ×1
pycharm ×1
python-2.7 ×1
redis ×1