我使用jQuery UI 自动完成小部件.我也有GAE数据存储区:
class Person(db.Model):
# key_name contains person id in format 'lastname-firstname-middlename-counter',
# counter and leading dash are omitted, if counter=0
first_name = db.StringProperty()
last_name = db.StringProperty()
middle_name = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
当用户可以输入姓氏,名字和/或中间名时,如何在自动填充小部件中搜索此人?
所以,我得到的用户输入字符串为self.request.get('term').我应该如何在我的数据存储区中搜索相同内容(因为我需要查看每个字段,可能还有3个字段的组合值)?如何优化这样的查询?我也不清楚答复格式应该是什么.jQuery doc说:
数据源可以是:
Run Code Online (Sandbox Code Playgroud)an Array with local data a String, specifying a URL a Callback本地数据可以是一个简单的字符串数组,也可以包含数组中每个项目的对象,带有标签或值属性或两者.
我使用UniVerse ODBC驱动程序将数据从我们的事务系统提取到SQL Server 2008. ODBC驱动程序安装在Windows Server 2003上,它工作正常.我试图找到一些关于编写标量函数(如CONVERT)的语法的帮助.
当我阅读手册时,我发现该功能得到了支持.但是当我尝试编写一个类似的查询时
SELECT CONVERT(ID AS VARCHAR(10)) FROM TableName
Run Code Online (Sandbox Code Playgroud)
查询失败,语法错误.我怀疑ODBC驱动程序不支持此语法.任何帮助都将受到高度赞赏.谢谢.
我正在尝试使用JDO在GAE平台上编写Vaadin应用程序,当我想调用此方法时:
public void createUser(String login, String password, String email) {
PersistenceManager pm = PMF.get().getPersistenceManager();
User user = new User(login, password, email);
try {
pm.makePersistent(user);
} finally {
pm.close();
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
(...)引起:javax.jdo.JDOFatalUserException:必须指定名为javax.jdo.PersistenceManagerFactoryClass的属性,或者带有META-INF/services/javax.jdo.PersistenceManagerFactory条目的jar文件必须位于类路径中,或者必须指定名为javax.jdo.option.PersistenceUnitName的属性.NestedThrowables:javax.jdo.JDOUserException:您已为此PMF指定使用"transactions-optional"的"持久性单元"(但这不存在!)或您使用"transactions-optional"调用JDOHelper.getPersistenceManagerFactory作为位于javax.jdo.JDOHelper的javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:856)javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:1092)中属性文件的名称(并且不存在于CLASSPATH中) .appPersistenceManagerFactory(JDOHelper.java:914)at myapp.PMF.(PMF.java:8)... 43更多引起:javax.jdo.JDOUserException:您已指定此PMF使用"持久性单位" "transactions-optional"(但这不存在!)或者您将JDOHelper.getPersistenceManagerFactory称为"transactions-optional"作为属性文件的名称(并且这不存在于CLASSPATH中)(...)
我搜索了谷歌,发现了一些解决这个问题的方法,但没有一个适用于我的应用程序(或者我做错了什么).例如.这不行.哦,我在META-INF中有jdoconfig.xml文件.如果有人有类似的问题,并且他想分享他的智慧,我将非常感激.
编辑:jdoconfig文件:
<?xml version="1.0" encoding="utf-8"?>
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig">
<persistence-manager-factory name="transactions-optional">
<property name="javax.jdo.PersistenceManagerFactoryClass"
value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory" />
<property name="javax.jdo.option.ConnectionURL" value="appengine" />
<property name="javax.jdo.option.NontransactionalRead" value="true" />
<property name="javax.jdo.option.NontransactionalWrite"
value="true" />
<property name="javax.jdo.option.RetainValues" value="true" />
<property name="datanucleus.appengine.autoCreateDatastoreTxns"
value="true" />
</persistence-manager-factory>
</jdoconfig>
Run Code Online (Sandbox Code Playgroud) google-app-engine persistence jdo vaadin google-cloud-datastore
我有这样的模型:
class Users(db.Model):
email = db.EmailProperty(required=True, indexed=True)
user_name = db.StringProperty(required=True, indexed=True)
api_key = db.StringProperty(required=False, indexed=False)
active = db.BooleanProperty(required=True, indexed=False)
real_name = db.StringProperty(required=False, indexed=False)
...etc
Run Code Online (Sandbox Code Playgroud)
当我尝试进行这样的查询时:
user = db.GqlQuery("SELECT email, api_key, active FROM Users WHERE user_name = :1", username).get()
Run Code Online (Sandbox Code Playgroud)
它返回None,但是当我使用这个查询时:
user = db.GqlQuery("SELECT * FROM Users WHERE user_name = :1", username).get()
Run Code Online (Sandbox Code Playgroud)
没关系,退货.但为什么我不能使用第一个查询?
虽然我在过去几个月里一直在忙着完成我的Google App Engine解决方案,但现在我发现由于本地dev_server和appspot之间的变化和差异,Google让我把我画成了一个角落.
场景:我的应用程序部署在带有Federated OpenID身份验证的appspot上.
问题:当应用配置为使用OpenID时,Google不支持数据上传.(他们知道这个问题,并不认为这是一个错误.)
几年前,尼克·约翰逊在他的博客上发布了一个remote_api和OpenID解决方法,但有几个人报告说它不再适用.
此外,最新的(第二版)Dan Sanderson的书"Programming Google App Engine"不再包含有关数据上传的章节.有一章关于备份和还原,但在备份之前我无法恢复数据,在数据存在之前我无法备份数据!
我无法相信我是这个困境中的唯一一个 - 它似乎应该是一个非常普遍的需求 - 我只需要在我的应用程序使用OpenID时上传数据.
请记住,关于我的本地dev_server Python应用程序的一切都很好(appcfg.py,upload_data,remote_api,CSV yaml configs等),但appspot上的这个问题阻止我发布我的应用程序!
有没有人有一个简单的,最新的,有文档记录的配方,可以将数千条记录上传到app引擎?定制上传处理程序端点 用新的应用程序版本捆绑数据文件,然后以某种方式读取它们?将CSV文件发布到Google云端硬盘并从任务队列中读取它们?
有任何想法吗?
我目前正在使用Google Datastore存储数据.我想以sql数据库的形式保留一个脱机版本.是否可以在谷歌应用引擎上使用sqlite将数据存储转换为SQL数据库?
我是Datastore的初学者,我想知道如何使用它来实现我想做的事情.
例如,我的应用需要跟踪客户及其所有购买情况.
来自关系数据库,我可以通过创建[Customers]和[Purchases]表来实现这一点.在Datastore中,我可以使[Customers]和[Purchases]种类.
我正在努力的是[购买]类型的结构.
如果我将[Purchases]作为[Customers]类型的子项,那么[Customers]中的一个实体和[Purchases]中的一个实体是否共享相同的密钥?这是否意味着在[Purchases]实体内部,我会为每次购买而持续增加一个属性?
或者,我是否会为他们进行的每次购买都有一个[购买]实体,并且在每个实体中,我会有一个指向[客户]类型的实体的属性?
数据存储在这些场景中的表现如何?
您好我想知道使用Int和String ID为Entity Key有多大的性能差异.
我无法找到任何关于此的文章.在我看来,大规模比较长字符串必须比int64s慢得多或者我错了,并且有一些很酷的算法使它以相同的速度运行.
我想使用sha256哈希作为字符串ID,但是与int ID相比,我不想丢失任何东西.
例如,如果我有1 000 000 000个同类实体并且我使用sha512有实体的字符串ID(128个字符),那么在相同数量的实体中使用比实际数量的int64 ID慢1个实体的读取(从数据存储获取)?如果是多少?
谢谢你的回答或建议,希望我解释得对.
在GAE中,使用Objectify时,您可以查询HashMap吗?如果是这样你会怎么写呢?
ofy().load().type(MyClass.class).filter("hashMapfieldName", "keyQueryinggFor").list();
Run Code Online (Sandbox Code Playgroud)
似乎不工作,而且hashMapfieldName是一个HashMap<String, String>.我期待找到hashMapfieldName包含某个键的实体.

class Entries(ndb.Model):
description = ndb.StringProperty()
seqid = ndb.IntegerProperty()
link = ndb.StringProperty()
group = ndb.StringProperty()
timestamp = ndb.StringProperty()
referrals = ndb.StringProperty(repeated=True)
Run Code Online (Sandbox Code Playgroud)
图片中的两个条目由两个不同的用户创建.用户是Entry的父级.
我在生产中获得了重复的ID,但在本地没有.此外,它始终是相同的ID号(但它肯定不是任何地方的硬编码)
由于父级是用户,我仍然可以将其作为唯一条目拉出来,但如果我有两个条目与同一个父用户,则意味着会出现问题.
python google-app-engine app-engine-ndb google-cloud-datastore