Django有一些从DB到JSON格式返回的ORM模型的自动序列化.
如何将SQLAlchemy查询结果序列化为JSON格式?
我试过,jsonpickle.encode但它编码查询对象本身.我试过了,json.dumps(items)但它回来了
TypeError: <Product('3', 'some name', 'some desc')> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
是否真的很难将SQLAlchemy ORM对象序列化为JSON/XML?它没有默认的序列化器吗?现在序列化ORM查询结果是非常常见的任务.
我需要的只是返回SQLAlchemy查询结果的JSON或XML数据表示.
需要在javascript datagird中使用SQLAlchemy对象的JSON/XML格式的查询结果(JQGrid http://www.trirand.com/blog/)
Bootstrap 3在响应式实用程序中有很好的CSS类,允许我隐藏或显示一些块,具体取决于屏幕分辨率 http://getbootstrap.com/css/#responsive-utilities-classes
我在CSS文件中有一些样式规则我想要应用或不基于屏幕分辨率.
我该怎么做?
我将把我的所有CSS文件最小化到生产部署中的文件,但如果没有其他解决方案而不是为不同的屏幕分辨率使用单独的CSS文件,则可以避免这种情况.
对于Django,是否有像South的SQLAlchemy自动迁移工具?
我查看了sqlalchemy-migrate,但它似乎没有自动生成sql更新脚本或升级降级数据库
看起来像sqlalchemy-migrate你需要a)手动将旧模型复制到新文件b)在应用程序中创建新模型并将其复制到新文件c)在python sqlalchemy扩展方言d中手动创建/删除/更改表)生成sql alter script e)运行命令执行alter sql脚本
至于我它没有解决问题,只增加了开销,因为我可以简单地做d)手动,它会快得多a),b),c)手动只是为了d)你可以做一个步.
SQLAlchemy是否有像JDBC for Django或许多类似RoR的迁移工具的自动迁移库?
我需要的是在python app中更改SQLAlchemy模型,运行工具,它会将当前的数据库模式与新模型应该使用的新数据库模式进行比较,并创建我可以手动调整并执行的Alter脚本.
在Python中有这样的解决方案吗?
有一组自定义结构元素:
struct MyStruct
{
int id;
std::string currencyCode;
int month;
int year;
int amount;
};
Run Code Online (Sandbox Code Playgroud)
此数据将显示在某个表中,该表允许按多列排序(通过单击按住Ctrl按钮的表列).
通过一个属性对客户对象集合进行排序非常简单:
vector<MyStruct> values;
std::sort( values.begin( ), values.end( ), [ ]( const MyStruct& lhs, const MyStruct& rhs )
{
return lhs.key < rhs.key;
});
Run Code Online (Sandbox Code Playgroud)
要么
struct MyStruct_x_Greater
{
bool operator()( const MyStruct& lMyStruct, const MyStruct& rMyStruct ) const {
return lMyStruct.x < rMyStruct.x;
}
};
std::sort( values.begin(), values.end(), MyStruct_x_Greater() );
Run Code Online (Sandbox Code Playgroud)
但是如何通过几个属性进行排序(类似于sql ORDER BY column1 DESC, column2 ASC)?
处理复杂业务逻辑的好方法是什么,从一开始就需要许多嵌套的if语句?
例:
优惠券.可能:
1a)价值折扣
1b)百分比折扣
2a)正常折扣
2b)累进折扣
3a)需要访问优惠券
3b)不需要访问优惠券
4a)仅适用于已经购买的客户
4b)适用于任何客户
5a)仅从国家(X,Y,...)应用于客户
这要求代码更复杂,然后:
if (discount.isPercentage) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isValue) {
if (discount.isNormal) {
if (discount.requiresAccessCoupon) {
} else {
}
} else if (discount.isProgressive) {
if (discount.requiresAccessCoupon) {
} else {
}
}
} else if (discount.isXXX) {
if (discount.isNormal) {
} else if (discount.isProgressive) { …Run Code Online (Sandbox Code Playgroud) 我有来自Dapper查询的动态结果,其中包含如下记录:
{DapperRow, billing_currency_code = 'USD', count(*) = '6'}
Run Code Online (Sandbox Code Playgroud)
我可以通过使用来访问'USD' rowVariable.billing_currency_code
要获得"6"值我试过rowVariable["count(*)"]和rowVariable.kv["count(*)"],不幸的是没有什么作品?
count(*)在我的情况下,我无法更改列名称
在这种情况下如何从rowVariable类型DapperRow中获取'6'值?
谢谢.
在一个应用程序的urls.py我有:
urlpatterns = patterns('app.views',
url(r'^products/$', products, name="products"),
url(r'^$', index, name="index"),
)
Run Code Online (Sandbox Code Playgroud)
在基础项目urls.py我有:
urlpatterns = patterns('',
(r'^$', include('app.urls')),
(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)
为什么http://127.0.0.1:8000/ - 适用于app.views.index方法,而http://127.0.0.1:8000/products/ - 返回404错误,并且未在网址路由中定义?
花了一些时间就已经找不到解决方案了,也许有一些我想念的简单......
这个功能有什么问题?它适用于Opera和Firefox,但在Windows下不适用于Safari
function getImage(url) {
var image = document.createElement('img'); // new Image(1, 1);
image.src = url;
image.onload = function() {};
}
Run Code Online (Sandbox Code Playgroud)
当我尝试getImage(' http://site.com/someservlet.gif ')此图像未加载(因为someservlet.gif记录所有请求)它适用于Opera和Firefox,但不适用于Safari.我尝试了"new Image()"和"document.createElement('img')" - 相同的结果.
==========更新:函数直接调用时效果很好,从事件监听器调用时问题启动
<a href="http://google.com/"
onclick="getImage('http://127.0.0.1/pic/img.gif?rnd=' + Math.random());">google</a>
<a href="#"
onclick="getImage('http://127.0.0.1/pic/img.gif?rnd=' + Math.random());">local</a>
<script type="text/javascript">
function getImage(url) {
var image = document.createElement('img');
alert('1');
image.onload = function() {alert(image.src);};
image.src = url;
alert('2');
}
</script>
Run Code Online (Sandbox Code Playgroud)
"本地"链接在Firefox,Opera和Safari中运行良好(但是Safari显示alert1,alert2,然后由于某种原因警告"src",而其他浏览器显示alert1,alertSrc,alert2)
"google"链接Opera,Firefox - 运行良好(alert1,alertSrc,alert2),但Safari不会 - 显示alertSrc.在Safari中,您可以看到alert1,alert2等等.当有人点击Safari的"google"链接时,Servlet"/pic/img.gif"不会收到请求.
有什么问题,如何解决?
谢谢.
我使用Python集合来存储唯一对象.每个对象都有__hash__并被__eq__覆盖.
该集包含近20万个对象.该集本身占用了近4 GB的内存.它在超过5 GB的机器上运行良好,但现在我需要在只有3 GB RAM的机器上运行该脚本.
我重写了一个脚本到C# - 实际上从同一个源读取相同的数据,把它放到一个CLR模拟的集合(HashSet)而不是4 GB,它花了近350 MB,而脚本执行的速度相对相同(接近40秒)但我必须使用Python.
问题1:Python是否有任何"磁盘持久性"设置或任何其他解决方法?我猜它只能在内存中存储hash/eq方法中使用的"key"数据,其他所有内容都可以保存到磁盘上.或者也许在Python中有其他变通方法可以拥有一个独特的对象集合,这些对象可能占用比系统中可用内存更多的内存.
Q2:不太实际的问题:为什么python set会为一个集合占用更多的内存?
我在64位Ubuntu 12.10上使用标准Python 2.7.3
谢谢.
Update1:什么脚本做:
阅读大量半结构化的JSON文档(每个JSON由序列化对象组成,其中包含与之相关的聚合对象的集合)
解析每个JSON文档以从中检索主对象和聚合集合中的对象.每个解析的对象都存储在一个集合中.Set仅用于存储唯一对象.首先我使用了数据库,但数据库中的唯一约束使x100-x1000的速度变慢.每个JSON文档都被解析为1-8种不同的对象类型.每个对象类型都存储在它自己的集合中,以便仅在内存中保存唯一对象.
存储在集合中的所有数据都以唯一约束保存到关系数据库中.每个集都存储在单独的数据库表中.
脚本的整个想法是获取非结构化数据,从JSON文档中的聚合对象集合中删除重复项,并将结构化数据存储到关系数据库中.
更新2:
2 delnan:我评论了所有代码行,添加了不同的集合,使所有其他人员(获取数据,解析,迭代)保持不变 - 该脚本占用的内存减少了4 GB.
这意味着当这些200K对象被添加到集合中时 - 它们开始占用大量内存.该对象是来自TMDB的简单电影数据 - ID,类型列表,演员列表,导演,许多其他电影细节以及可能来自维基百科的大型电影描述.
我使用MongoKit得到一些非常奇怪的错误:
>>> from mongokit import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/mongokit/__init__.py", line 35, in <module>
from document import Document, ObjectId
File "/usr/local/lib/python2.7/dist-packages/mongokit/document.py", line 48, in <module>
from pymongo.objectid import ObjectId
ImportError: No module named objectid
Run Code Online (Sandbox Code Playgroud)
我尽力找到原因,但没有任何帮助.实际上我用google搜索"ImportError:没有名为objectid的模块"错误,它根本没有结果.我试着按照简单的教程http://namlook.github.com/mongokit/introduction.html#a-quick-example使用MongoKit,本教程的第一行产生了这个奇怪的错误.以下是MongoKit安装的日志.
我做错了什么?
user@server:~$ sudo pip install mongokit
Downloading/unpacking mongokit
Downloading mongokit-0.7.2.tar.gz (69Kb): 69Kb downloaded
Running setup.py egg_info for package mongokit
Downloading/unpacking pymongo>=2.0.1 (from mongokit)
Downloading pymongo-2.2.tar.gz (228Kb): 228Kb downloaded
Running setup.py egg_info for package pymongo …Run Code Online (Sandbox Code Playgroud) python ×4
python-2.7 ×2
sqlalchemy ×2
c++ ×1
c++11 ×1
css ×1
css3 ×1
dapper ×1
database ×1
django ×1
flask ×1
javascript ×1
json ×1
migration ×1
mongokit ×1
pymongo ×1
refactoring ×1