我最近发现康达我是有安装SciPy的麻烦后,确切的说是我开发一个应用程序的Heroku.
使用Conda,您可以创建与virtualenv非常相似的环境.我的问题是:
我正在创建一个Django Web应用程序,并使用Conda来管理所需的包和虚拟环境.我想在激活环境后立即设置环境变量(Django设置位置).它还应该将当前目录更改为我的项目目录.
我之前使用过virtualenvwrapper,我刚刚将命令添加到postactivate脚本中.
如何使用Conda实现这一目标?
我有一个存储在pandas DataFrame中的股票价格数据,如下所示(实际上它在面板中,但我将其转换为DataFrame)
date ticker close tsr
0 2013-03-28 abc 22.81 1.000439
1 2013-03-28 def 94.21 1.006947
2 2013-03-28 ghi 95.84 1.014180
3 2013-03-28 jkl 31.80 1.000000
4 2013-03-28 mno 32.10 1.003125
...many more rows
Run Code Online (Sandbox Code Playgroud)
我想将它保存在Django模型中,它看起来像这样(匹配列名):
class HistoricalPrices(models.Model):
ticker = models.CharField(max_length=10)
date = models.DateField()
tsr = models.DecimalField()
close = models.DecimalField()
Run Code Online (Sandbox Code Playgroud)
我到目前为止最好的用它来保存它,其中df是我的DataFrame:
entries = []
for e in df.T.to_dict().values():
entries.append(HistoricalPrices(**e))
HistoricalPrices.objects.bulk_create(entries)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来保存这个?
我看过django-pandas,但看起来它只是从数据库读取.
我该如何记录Django项目?我不是在谈论我正在创建的应用程序,我将推送到github.它基本上是内部文档,可以帮助我们采用的新开发人员加快系统速度.(我想这一般是文档的重点)
我应该记录下面的每个视图功能,模型或表单:
def home(request):
"""View that renders the home page."""
class MyModel(models.Model):
"Documentation regarding my model."""
Run Code Online (Sandbox Code Playgroud)
这似乎有点矫枉过正.是否有一些好的项目我可以从中寻找灵感?
我无法理解ManyToMany模型字段与直通模型的使用.没有ManyToMany字段,我可以很容易地实现相同的功能.考虑以下Django的文档:
class Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)
我不明白的是,如何使用ManyToMany字段比简单地删除它并使用相关管理器更好.例如,这两个模型将更改为以下内容:
class Group(models.Model):
name = models.CharField(max_length=128)
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE, related_name='members')
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我正在尝试在 Django 中创建一个百分比字段,用户只需填写 40 表示 40%。输入框的右侧会有一个百分比符号,以便他们知道他们应该填写一个百分比。0.4 必须存储在 DB 中。到目前为止,我已经尝试了以下方法:
class PercentageField(fields.FloatField):
widget = fields.TextInput(attrs={"class": "percentInput"})
def to_python(self, value):
val = super(PercentageField, self).to_python(value)
if is_number(val):
return val/100
return val
def prepare_value(self, value):
val = super(PercentageField, self).prepare_value(value)
if is_number(val):
return str((float(val)*100))
return val
def is_number(s):
if s is None:
return False
try:
float(s)
return True
except ValueError:
return False
Run Code Online (Sandbox Code Playgroud)
它可以工作,但问题是,当我发布无效数据并再次呈现表单时,它会将 40 显示为 4000。换句话说,它再次将数字乘以 100,而不将其除以。
任何建议我如何解决它?
我试过这个解决方案,但它重复值 100 次。在我更正之后它也有同样的问题。
我正在使用 Python3.5
我一整天都在努力解决这个问题,我希望有人可以帮助我.
我的问题很简单:我希望通过互联网将数据(主要是简单的命令)从一台PC传输到另一台PC.
当两台计算机连接到我的家用路由器时,我已经能够使用Java中的套接字来实现这一点.然后,我使用两个不同的移动电话将两台计算机连接到互联网,并尝试再次传输数据.我使用移动电话,因为这提供了到互联网的直接路由,如果我使用我的路由器,我必须设置端口转发,至少,这是我理解它.
我认为问题在于我设置客户端套接字的方法.我用了:
Socket kkSocket = new Socket(ipAddress, 3333);
Run Code Online (Sandbox Code Playgroud)
其中ipAddress是运行服务器的计算机的IP地址.我通过右键单击连接,状态,支持来获取IP地址.这是正确使用的IP地址还是在哪里可以获取服务器的地址?此外,是否可以为我的计算机获取一个固定的名称,而不是输入IP地址,因为每次使用我的手机连接到互联网时这都会改变?
或者,是否有更好的方法来解决我的问题,如使用http,如果是这样,我在哪里可以找到有关此问题的更多信息?
编辑: 是否有可能让服务器程序在互联网上的某个服务器上运行.我的原始服务器将是一个向该服务器发送信息的客户端.然后,此服务器将此信息传递给我的原始客户端,反之亦然.这样,我的计算机的IP地址无关紧要,因为我只需要知道在网络上某处托管的服务器的地址.这似乎是一个更好的解决方案吗?我从哪里开始实施这样的解决方案?
谢谢!
我有一个 Django 应用程序并使用 Celery 来处理长时间运行的任务。
假设我需要生成一个文件(需要 5 秒),将其附加到电子邮件中并将其发送给 1000 个用户,以下哪种方法是首选方法?
方法 1:For 循环外部任务 - 生成计算后台任务,每个任务运行几秒钟
@share_task
def my_task(usr):
#gen file + send email...
def send_to_all_users(users): # called to start task
for usr in users:
my_task.delay(usr)
Run Code Online (Sandbox Code Playgroud)
方法 2:任务内的 For 循环 - 生成 1 个可能运行数小时的后台任务
@share_task
def my_task(users):
for usr in users:
#gen file + send email...
def send_to_all_users(users): # called to start task
my_task.delay(users)
Run Code Online (Sandbox Code Playgroud)
使用方法 1,我可以扩大工作人员的数量以更快地完成整个任务,但创建所有这些任务可能需要一段时间,而且我不确定我的任务队列是否可以填满,然后作业会被丢弃?
方法2看起来更简单,但它可能会运行很长时间,而且我无法扩大工人的数量。
不确定这是否重要,但我的应用程序正在 Heroku 上运行,并且我使用 Redis 作为消息代理。我目前正在使用一个后台工作者。
我需要在两个pandas数据帧上进行vlookup样式操作
Excel中的Vlookup函数有一个额外的参数,无论它是否应该找到近似或完全匹配.对于完全匹配,我知道我可以使用join函数.但是,如果我找到下一个更大的值,我将如何进行近似匹配?
例如,如果我有一个标记和成绩定义数据框,如下所示:
Student Mark
John 65
Peter 75
Jason 79
Run Code Online (Sandbox Code Playgroud)
和
Mark Symbol
50 D
60 C # table indicates a mark between 60 and 69 is a C symbol
70 B
80 A
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这样的表格:
Student Mark Symbol
John 65 C
Peter 75 B
Jason 79 B
Run Code Online (Sandbox Code Playgroud) 假设我有一个具有以下模型定义的事务列表:
class Transaction(models.Model):
amount = models.FloatField()
client = models.ForeignKey(Client)
date = models.DateField()
description = models.CharField()
invoice = models.ForeignKey(Invoice, null=True)
Run Code Online (Sandbox Code Playgroud)
现在我想在月底为每个客户创建发票.发票模型如下所示:
class Invoice(models.Model):
client = models.ForeignKey(Client)
invoice_date = models.DateField()
invoice_number = models.CharField(unique=True)
def amount_due(self):
return self.transaction_set.aggregate(Sum('amount'))
def create_invoices(invoice_date):
for client in Client.objects.all():
transactions = Transaction.objects.filter(client=client)
if transactions.exists():
invoice = Invoice(client=client, number=get_invoice_number(), date=invoice_date)
invoice.save()
transactions.update(invoice=invoice)
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过批量创建在1个查询中创建批量创建的所有发票,但我仍然需要单独在交易模型中设置发票字段.
在创建所有发票后,是否可以使用单个查询设置所有交易模型的发票字段?最好在使用ORM时,但如果需要,很乐意使用原始SQL.
我知道我也可以在交易清单上使用逐个客户来获取每个客户的总数,但随后各个条目都没有链接到发票.
django ×7
python ×5
conda ×2
pandas ×2
anaconda ×1
celery ×1
django-orm ×1
java ×1
postgresql ×1
scipy ×1
sockets ×1
sql ×1
virtualenv ×1