我在表中两列col1,col2他们都是独一无二的索引(COL1是唯一的,因此是COL2).
我需要插入到这个表中,使用ON CONFLICT语法并更新其他列,但我不能同时使用两个列in conflict_target子句.
有用:
INSERT INTO table
...
ON CONFLICT ( col1 )
DO UPDATE
SET
-- update needed columns here
Run Code Online (Sandbox Code Playgroud)
但是如何为几个列执行此操作,如下所示:
...
ON CONFLICT ( col1, col2 )
DO UPDATE
SET
....
Run Code Online (Sandbox Code Playgroud) 刚刚开始使用Robolectric,它似乎是我所需要的.但是,我在使用SharedPreferences方面遇到了一些障碍.
我有两个测试用例
Activity需要一个新的/空的sharedPreferences
Activity期望sharedPreferences中包含一些数据
对于测试用例1,测试按预期传递,所以很好:)
但是,对于测试案例2,我似乎无法找到一个很好的方法来为Robolectric提供一些虚假数据,因此Activity能够访问这些假数据.
感觉就像一个非常常见的用例,但我似乎无法弄清楚如何做到这一点!
我想为我们学校实施一个通知系统,它是一个不为公众开放的php/mysql webapp,因此它不会收到太多流量."每日500-1000名访客".
1.我最初的方法是使用MYSQL触发器:
我使用Mysql AFTER INSERT trigger将记录添加到名为的表中notifications.就像是.
'CREATE TRIGGER `notify_new_homwork` AFTER INSERT ON `homeworks`
FOR EACH ROW INSERT INTO `notifications`
( `from_id`, `note`, `class_id`)
VALUES
(new.user_id,
concat('A New homework Titled: "',left(new.title,'50'),
'".. was added' )
,new.subject_id , 11);'
Run Code Online (Sandbox Code Playgroud)
这种黑魔法工作得非常好,但我无法跟踪这个通知是否是新的"显示用户新通知的数量".所以我添加了一个名为notification的页面.
通过类似的方式检索通知
SELECT n.* from notifications n
JOIN user_class on user_class.class_id = n.class_id where user_class.user_id = X;
Run Code Online (Sandbox Code Playgroud)
注意:表user_class将用户链接到类"user_id,class_id,subject_id"-subject为null,除非用户是教师'
现在我的下一个挑战是.
例如,如果2个用户对某些内容发表了评论,那么就不要插入新行,只需使用"userx和其他1个在hw上注释"的内容更新旧行.
非常感谢
编辑
根据下面的答案,要在行上设置读/未读标志,我需要为每个学生设置一行而不仅仅是整个类的一行..这意味着将触发器编辑为类似
insert into notifications (from_id,note,student_id,isread)
select new.user_id,new.note,user_id,'0' from user_class where user_class.class_id = new.class_id group by …Run Code Online (Sandbox Code Playgroud) --fake-initial和--fakeDjango迁移有什么区别?使用虚假迁移有哪些危险?有人知道吗?非常感谢大家.
我正在使用django 1.10
我是django框架的新手.
我尝试按照djangogirls教程创建一个简单的博客.
默认情况下,我们将sqlite3作为默认数据库引擎
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试了一些ORM查询,甚至执行了一些行sql查询
在我的django项目中,我有这个db.sqlite3文件
blog db.sqlite3 env manage.py mysite
Run Code Online (Sandbox Code Playgroud)
我的问题:如何知道django在这个db.sqlite3中创建的模式(我知道mysql,我可以看到有关每个数据库和表的详细信息,所以在这里我只想知道sqlite中的更多内容)
我的系统中有sqlite3,我尝试过.database命令,但它只显示了我
seq name file
--- --------------- ----------------------------------------------------------
0 main
Run Code Online (Sandbox Code Playgroud) 我已经阅读了所有相关问题.
我有两个Django项目,信号在一个工作正常,但不在第二个工作(我只是分别复制粘贴代码和更改名称).
我有订单模型的订单应用程序.应用程序包含在INSTALLED_APPS设置中.
我在apps.py中有app配置:
from django.apps import AppConfig
class OrdersConfig(AppConfig):
name = 'orders'
def ready(self):
super(OrdersConfig, self).ready()
# noinspection PyUnresolvedReferences
import signals
Run Code Online (Sandbox Code Playgroud)
__init__.py:
default_app_config = 'orders.apps.OrdersConfig'
Run Code Online (Sandbox Code Playgroud)
最后,signals.py:
@receiver(post_save, sender=Order)
def order_save(sender, instance, created, **kwargs):
print 'Post save'
if created:
print 'Created'
send_email_new_order.delay(settings.MODERATOR_EMAIL, instance.pk)
Run Code Online (Sandbox Code Playgroud)
信号没有被调用.为什么?
Django 1.10.3.
所以我连接到像这样的谷歌api客户端.
googleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
googleApiClient.connect();
Run Code Online (Sandbox Code Playgroud)
这个完全相同的代码我在几个地方使用,它运作良好.它与您在教程中看到的没有什么不同.但现在:
java.lang.IncompatibleClassChangeError:方法'void com.google.android.gms.common.api.GoogleApiClient.connect()'应该是类型接口,但是发现它是virtual类型的声明(声明'java. lang.reflect.ArtMethod'出现在/system/framework/core-libart.jar中)
stacktrace报告的行是:
googleApiClient.connect();
Run Code Online (Sandbox Code Playgroud)
使用游戏服务8.1
compile 'com.google.android.gms:play-services:8.1.0'
Run Code Online (Sandbox Code Playgroud)
有这个吗?
我不知道是什么导致了这个错误.它似乎是一个没有修复的错误.任何人都可以告诉我如何解决这个问题吗?令我感到沮丧的是,我永无止境.谢谢.
Operations to perform:
Apply all migrations: admin, contenttypes, optilab, auth, sessions
Running migrations:
Rendering model states... DONE
Applying optilab.0006_auto_20160621_1640...Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 353, in execute_from_command_line
utility.execute()
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 345, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 348, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 399, in execute
output = self.handle(*args, **options)
File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 200, in handle
executor.migrate(targets, plan, fake=fake, fake_initial=fake_initial)
File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 92, in migrate
self._migrate_all_forwards(plan, …Run Code Online (Sandbox Code Playgroud) 我在使用带有JSONField的ArrayField插入字段时遇到问题.
models.py
locations = ArrayField(JSONField(null = True,blank = True), blank=True, null = True)
Run Code Online (Sandbox Code Playgroud)
插入
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = location_arr
instance.save()
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了
列"locations"的类型为jsonb [],但表达式的类型为text []
第1行:...... d"= 2517,"locations"= ARRAY ['{"loc ...
提示:您需要重写或转换表达式.
所以我尝试使用以下方式转储它:
import json
location_arr = [{"locations" : "loc1","amount":Decimal(100.00)},{"locations" : "loc2","amount":Decimal(200.25)}]
instance.locations = json.dumps(location_arr)
instance.save()
Run Code Online (Sandbox Code Playgroud)
然后我得到了这个
第1行:...... d"= 2517,"locations"='[{"loc":......
详细信息:"["必须引入显式指定的数组维度.
我在用:
在我的数据库中,我有一个包含companyId的表,指向公司,以及一些文本.我想做一个FULLTEXT搜索,但因为我总是向特定的公司发出请求.我想使用一个结合了我的companyId和全文索引的复合键.反正有吗?我猜这是不可能的,创建索引的最佳方法是什么,以便以下查询最快?
请求将永远是
SELECT * FROM textTable
WHERE companyId = ? (Possibly more conditions) AND
MATCH(value) AGAINST("example")
Run Code Online (Sandbox Code Playgroud)
我应该正常在整数列上创建索引并添加一个全文索引吗?或者我应该value在索引中包含该列?也许两者?
django ×5
python ×4
android ×2
java ×2
mysql ×2
postgresql ×2
sqlite ×2
arrays ×1
django-orm ×1
json ×1
php ×1
robolectric ×1
sql ×1
triggers ×1
upsert ×1