在项目中我有这个表:
还有Product型号(id, name, catalogId, catalogTitle, manufacturerId, manufacturerName).
如果我想获得Product项,如何在Linq中写下这个SQL查询?
SELECT Product.Name, Product.CatalogId, Product.ManufacturerId, [Catalog].Name, Manufacturer.Name
FROM Product, [Catalog], Manufacturer
WHERE [Catalog].Id=Product.CatalogId AND Manufacturer.id=Product.ManufacturerId AND Product.Active=1
Run Code Online (Sandbox Code Playgroud) 我目前在django应用程序中有一些服务,如db和web,而docker-compose用于将它们串在一起.
网络版本有这样的代码..
web:
restart: always
build: ./web
expose:
- "8000"
Run Code Online (Sandbox Code Playgroud)
web中的docker文件有python2.7-onbuild,因此它使用requirements.txt文件来安装所有必需的依赖项.
我现在使用圆形CI进行集成,并有一个像这样的circle.yml文件..
....
dependencies:
pre:
- pip install -r web/requirements.txt
....
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以避免圈yml文件中的依赖条款.
相反,我希望Circle CI使用docker-compose.yml,如果这有意义的话.
我有一堆产品,每种产品都有许多不同的可能属性.例如,产品A具有名称,大小,颜色,形状.产品B有名称,卡路里,糖等.解决这个问题的一种方法是:
1)创建表
Products (id, name)
Attributes (id, name)
Product_Attributes (product_id, attribute_id, value as string)
Run Code Online (Sandbox Code Playgroud)
这允许最大的灵活性,但我听到很多人建议反对这个,虽然我不知道为什么.我的意思是,如果这些表被称为团队,玩家,Team_Players,我们都同意这是适当的关系设计.
每个向我解释为什么这么糟糕的人都会在一个完全灵活的关系设计的环境中这样做,你不会创建真正的表通过基本的几个基本初始表(例如object,attribute,object_attribute) - 我认为我们所有人都同意是坏事.但这是一个更加有限和包含的版本(只有产品,而不是系统中的每个对象),所以我认为将这两种架构组合在一起并不公平.
您遇到的哪些问题(经验或理论上的问题)使这个设计如此糟糕?
2)解决这个问题的另一种方法是创建一个Product表,其中包含一些列,如Size,Color,Shape,Weight,Sugar等,然后在末尾包含一些额外的列,以便为我们提供一些灵活性.这将创建通常稀疏的行,主要填充NULL.人们倾向于喜欢这种方法,但我的问题是,在此方法失去性能优势之前,您可以拥有多少列?如果你有200列,我想这不再是一个聪明的举动,但100列呢?50列?25列?
3)我所知道的最后一种方法是将所有属性作为blob(可能是JSON)存储在Products表的单个列中.我喜欢这种方法,但感觉不对.查询很难.如果您希望以后能够轻松更改属性的名称,则必须单独解析每个记录,或者通过某个ID将它们键入blob中.如果你去id路径然后你将需要另一个表属性,事情开始看起来像上面的方法#1,除了你将无法将你的blob加入attribute_id,所以我希望你不想查询任何东西按属性名称.
我喜欢这种方法的是你可以查询一个产品,在你的代码中你可以快速地访问它拥有的所有属性.如果删除产品,则无需清理其他表 - 易于保持一致.
4)我已经阅读了一些关于能够在某些RDBMS中索引强类型xml格式的东西,但老实说我对这种方法知之甚少.
我被卡住了.我认为方法#1是最好的选择,但我读到的所有内容都说这样的方式很糟糕.考虑这个问题的正确方法是什么,以便能够确定给定情况的最佳方法是什么?明显欢迎比我列出的更多的想法!
sql relational-database database-agnostic entity-attribute-value
我的模型类中有一个保存覆盖方法,每次保存一个对象时都会生成一个新的slug.
def save(self, *args, **kwargs):
if self.column2:
self.slug = slugify(self.column1 + " " + self.column2)
else:
self.slug = slugify(self.column1)
print slug
super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
当我尝试通过登录python shell创建一个新对象时,我看到正在调用save方法.
python manage.py shell
>>> MyModel(column1="test",column2="2015").save()
slug is test-2015
Run Code Online (Sandbox Code Playgroud)
但是,当我运行迁移时,不会调用此保存覆盖方法.这是我的迁移脚本的一部分..
...
def add_myModel_details(apps, schema_editor):
x = apps.get_model("myapp","myModel")
MyModel(column1 = "test", column2="2015" ).save()
.....
Run Code Online (Sandbox Code Playgroud)
slug为空,因为没有调用保存覆盖.
这是我多次遇到的一个特殊问题,但我从来没有真正找到一个简单的解决方案来解决这个看似简单的问题.
如何确保给定的父母有固定数量的孩子?
1)例子.
你如何确保一个特定的班级只有50名学生注册...?
create table class(
class_id number primary key,
class_name varchar2(50),
class_attributes varchar2(50)
);
create table student(
student_id number primary key,
student_name varchar2(50),
student_attributes varchar2(50)
);
create table class_student_asc(
class_id number,
student_id number,
other_attributes varchar2(50),
constraint pk_class_student_asc primary key (class_id,student_id),
constraint fk_class_id foreign key (class_id) references class(class_id),
constraint fk_student_id foreign key (student_id) references student(student_id)
);
Run Code Online (Sandbox Code Playgroud)
这些是我所知道的实现.让我知道您更喜欢哪一个,以及是否有更简单的方法来实现这一目标.
在子表(class_student_asc)上使用触发器实现它.
在插入前查询同一个表,更新触发器以获取计数.由于这会给出变异表错误,因此将其拆分为两个不同的语句级触发器(before-statement和after-statement)以实现结果.
http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551198119097816936
在类表中包含count变量,并在将记录插入子表之前锁定父记录以进行更新.
所以,像......
create table class(
class_id number primary key,
class_name varchar2(50),
class_attributes varchar2(50),
class_count INTEGER,
constraint chk_count_Students …Run Code Online (Sandbox Code Playgroud) 我有以下数据集.
create table t1 (
dept number,
date1 date
);
Table created.
insert into t1 values (100, '01-jan-2013');
insert into t1 values (100, '02-jan-2013');
insert into t1 values (200, '03-jan-2013');
insert into t1 values (100, '04-jan-2013');
commit;
Run Code Online (Sandbox Code Playgroud)
我的目标是创建一个排名列,每次更改部门时都会重置.我可以用于"partition by"子句的最接近的列是dept,但这不会给我想要的结果.
SQL> select * from t1;
DEPT DATE1
---------- ---------
100 01-JAN-13
100 02-JAN-13
200 03-JAN-13
100 04-JAN-13
select dept,
date1,
rank () Over (partition by dept order by date1) rnk
from t1
order by date1;
DEPT DATE1 RNK
---------- --------- ---------- …Run Code Online (Sandbox Code Playgroud) 我有一个示例django应用程序,正在尝试使用docker启动并运行。
docker-compose up调出网络,数据库和其他容器以及它们之间的链接。但是可能需要运行之前和之后的脚本。
我的方案中的示例脚本示例:
git
pip
docker
docker-compose
wget
Run Code Online (Sandbox Code Playgroud)
脚本示例:
数据库迁移,通常是docker run web...在容器启动并运行后使用手动完成的。
目前,我在应用程序的根目录下有一个deploy.sh,它遵循这样的逻辑..(我在启动时选择了一个Ubuntu映像)
#assuming I always choose ubuntu base image
sudo apt-get install x
sudo apt-get install y
sudo apt-get install z
docker-compose build .; docker-compose up -d;
docker-compose run web "python manage.py makemigrations"
Run Code Online (Sandbox Code Playgroud)
我的问题:
1)运行这些命令的最佳方法是什么?
2)每次部署都从头开始运行数据库迁移吗?还是由卷来解决此问题?
我正在尝试使用django rest框架将我的模型公开为API.
串行
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
Run Code Online (Sandbox Code Playgroud)
视图集
class UserViewSet(viewsets.ModelViewSet):
"""
API end point for User details and list
"""
serializer_class = UserSerializer
queryset = User.objects.all()
Run Code Online (Sandbox Code Playgroud)
路由器
router.register(r'users',views.UserViewSet)
Run Code Online (Sandbox Code Playgroud)
虽然这暴露了/ users /和users /,但我希望我的URL也包含一个user-slug,比如/ users/1/xyz-user-name.
有人解决了这个问题吗?这是否需要在视图集和路由器代码中进行更改,还是只能在路由器代码中配置?我的"slug"并不真正用于确定url路由,它仅用于URL可读性.
有什么指针吗?
您可以使用(linting)工具或编译步骤来捕获python中的导入/名称和其他错误吗?
另一个选择是确保测试所有可能的代码路径(这并不总是可行的,尤其是对于现有的大型代码库和其他原因而言)
这里有些例子。
syntax error代替import error。def test():
print("Time now is ..", datetime.datetime())
Run Code Online (Sandbox Code Playgroud)
pylint输出:
E0602: Undefined variable 'datetime' (undefined-variable)
Run Code Online (Sandbox Code Playgroud)
from datetime import datetime
def test():
print("Time now is ..", datetime.today2())
Run Code Online (Sandbox Code Playgroud)
编辑:要添加另一个选项。
这样做会import *显示一些错误,但不会显示函数内部的语句中的错误。
报告此错误
from datetime import datetime
print("today2", datetime.today2())
Run Code Online (Sandbox Code Playgroud)
错误:
Python 3.7.0 (default, Aug 22 2018, 15:22:56)
>>> from test import *
...
print("today2", datetime.today2())
AttributeError: type object 'datetime.datetime' has no attribute 'today2'
>>>
Run Code Online (Sandbox Code Playgroud)
这不是。
from datetime import …Run Code Online (Sandbox Code Playgroud) 尝试在我的 Mac 上boto3安装时出现以下错误python
pip3 install boto
Looking in indexes: https://pypi.org
ERROR: Could not find a version that satisfies the requirement boto (from versions: none)
ERROR: No matching distribution found for boto
Run Code Online (Sandbox Code Playgroud)
当我检查 PyPi.org 时,我看到了 boto3 包的结果。
我尝试从 github 下载该包,然后从源代码安装它,但在安装 boto3/requirements.txt 中的依赖项之一时遇到了同样的问题。