小编Jas*_*nTS的帖子

如何在MySQL查询中使用SELECT INSERT INTO时添加静态值?

我有两个MySQL表a和b,字段x和y.表b有1个额外的字段z.表a位于数据库db1中,b位于db2中.我想将x和y从a复制到b并为z设置静态值.我怎样才能做到这一点 ?

db1.a.x -> db2.b.x
db1.a.y -> db2.b.y
4 -> db2.b.z
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

"INSERT INTO db2.b (x,y) SELECT x,y FROM db1.a"
Run Code Online (Sandbox Code Playgroud)

如何将db2.bz设置为4?我不想为表设置永久默认变量.

mysql sql database

26
推荐指数
2
解决办法
4万
查看次数

如何将多个可重用的Django应用程序绑定在一起?

我尽力编写可重用的Django应用程序.现在我很困惑如何把它们放在一起以获得最终的项目.

这是我的意思的一个例子:我有一个存储,调整大小和显示图像的图片应用程序.此外,我还有一个存储,编辑和显示文本的博客应用程序.现在我想结合这两个来展示带有图像的博客文章.

为此,我可以在博客中放置外键字段以指向图片.但是如果没有图片应用,博客就无法使用.我也可以创建第三个应用程序,它负责连接两者.

这种"最佳实践"方式是什么?

编辑:谢谢你的非常好的答案,但我仍然在寻找更实际的例子来解决这个问题.完成我的示例:有时使用没有图片应用程序的博客应用程序会很好.但如果我硬编码依赖,那就不再可能了.那么第三个应用程序如何结合两者?

python django django-1.4

18
推荐指数
3
解决办法
4319
查看次数

如何在python中动态创建对象?

如何在Python中动态创建对象?我经常想把信息传递给我的Django模板,格式如下:

{'test': [a1, a2, b2], 'test2': 'something else', 'test3': 1}
Run Code Online (Sandbox Code Playgroud)

这使模板看起来不整洁.所以我认为最好只创建一个对象,如:

class testclass():
    self.test = [a1,a2,b2]
    self.test2 = 'someting else'
    self.test3 = 1
testobj = testclass()
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

{{ testobj.test }}
{{ testobj.test2 }}
{{ testobj.test3 }}
Run Code Online (Sandbox Code Playgroud)

而不是调用字典.

因为我只需要一次该对象,是否可以在不先写一个类的情况下创建它?有没有简写代码?可以这样做,还是糟糕的Python?

python django object

15
推荐指数
4
解决办法
1万
查看次数

如何防止Django模板中的自动转义?

在文档中它说:

唯一的例外是已经标记为"安全"的变量,无论是通过填充变量的代码,还是因为它已经应用了安全或转义过滤器.

"填充变量"部分如何工作?我实际上正在寻找一种方法来在视图中声明模板标签是安全的.我不知何故认为让设计师决定不是一个好主意.我的同事只要在"认为"这是一个好主意时就会添加它.

https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs

python django templates escaping

12
推荐指数
2
解决办法
1万
查看次数

如何在python中使用gexiv2?

我刚刚为我的debian machiene编译了exiv2和gexiv2,现在我想开始使用gexiv2来编译使用python的IPTC数据.gexiv2网站提供以下代码:

from gi.repository import GExiv2
Run Code Online (Sandbox Code Playgroud)

但这已经导致:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named gi.repository
Run Code Online (Sandbox Code Playgroud)

我甚至不能导入gi所以我想我错过了另一个包!?我该怎么做才能使这项工作符合预期?

更新:我将操作系统升级到最新的debian版本.我现在可以导入gi,但是我仍然遇到GExiv2的问题.

导入GExiv2时发生以下错误:

>>>from gi.repository import GExiv2
ERROR:root:Could not find any typelib for GExiv2
Run Code Online (Sandbox Code Playgroud)

python gobject exiv2 pygobject pyexiv2

6
推荐指数
1
解决办法
5590
查看次数

如何在python中重复异常?

在python中导致异常之后重复某些事情的最优雅方法是什么?

我有这样的东西[伪代码作为例子]:

try:
  do_some_database_stuff()
except DatabaseTimeoutException:
  reconnect_to_database()
  do_some_database_stuff() # just do it again
Run Code Online (Sandbox Code Playgroud)

但想象一下,如果我没有一个很好的功能,而是很多代码.重复的代码不是很好.

所以我认为这稍微好一些:

while True:
  try:
    do_some_database_stuff()
    break
  except DatabaseTimeoutException:
    reconnect_to_database()
Run Code Online (Sandbox Code Playgroud)

如果异常确实解决了问题,那就足够了.如果不是,我需要一个计数器来防止无限循环:

i = 0
while i < 5:
  try:
    do_some_database_stuff()
    break
  except DatabaseTimeoutException:
    reconnect_to_database()
    i += 1
Run Code Online (Sandbox Code Playgroud)

但后来我真的不知道它是否有效,所以它也是:

while i <= 5:
  try:
    do_some_database_stuff()
    break
  except DatabaseTimeoutException:
    if i != 5:
     reconnect_to_database()
    else:
      raise DatabaseTimeoutException
    i += 1
Run Code Online (Sandbox Code Playgroud)

你可以看到它开始变得非常混乱.

表达这种逻辑的最优雅方式是什么?

  • 尝试一下
  • 如果失败则应用修复
  • 尝试n次,包括修复
  • 如果它继续失败给我一个错误,以防止无限循环

python python-2.7

6
推荐指数
1
解决办法
144
查看次数

如何在保存之前获取 Django ImageField 的内容?

我正在尝试在保存模型实例的同时调整图像大小。

class Picture(models.Model):
  image_file = models.ImageField(upload_to="pictures")
  thumb_file = models.ImageField(upload_to="pictures", editable=False)
  def save(self, force_insert=False, force_update=False):
    image_object = Image.open(self.image_file.path)
    #[...] nothing yet
    super(Picture, self).save(force_insert, force_update)
Run Code Online (Sandbox Code Playgroud)

问题是 self.image_file.path 在保存模型之前不存在。它返回一个正确的路径,但图像还不存在。由于没有图像,我无法在 PIL 中打开它以调整大小。

我想将缩略图存储在thumb_file(另一个ImageField)中,所以我需要在保存模型之前进行处理。

有没有打开文件的好方法(也许在内存中获取 tmp 图像对象)还是我必须先保存整个模型,调整大小然后再次保存?

python django file-upload django-models

5
推荐指数
1
解决办法
3942
查看次数

如何使用python使用硬链接替换重复文件?

我是摄影师,做了很多备份。多年来,我发现自己拥有许多硬盘驱动器。现在,我购买了NAS,并使用rsync将所有图片复制到一个3TB的RAID 1上。根据我的脚本,其中大约1TB的文件是重复的。这是因为在删除笔记本电脑上的文件之前进行了多次备份,而且非常混乱。我的确在旧硬盘上备份了所有这些文件,但是如果我的脚本搞砸了,那将很痛苦。您能否看一下我重复的查找程序脚本,并告诉我您是否认为我可以运行它?我在测试文件夹上进行了尝试,看起来还可以,但是我不想在NAS上弄乱东西。

该脚本在三个文件中包含三个步骤。在第一部分中,我将找到所有图像和元数据文件,并将它们作为大小的文件放入货架数据库(datenbank)中。

import os
import shelve

datenbank = shelve.open(os.path.join(os.path.dirname(__file__),"shelve_step1"), flag='c', protocol=None, writeback=False)

#path_to_search = os.path.join(os.path.dirname(__file__),"test")
path_to_search = "/volume1/backup_2tb_wd/"
file_exts = ["xmp", "jpg", "JPG", "XMP", "cr2", "CR2", "PNG", "png", "tiff", "TIFF"]
walker = os.walk(path_to_search)

counter = 0

for dirpath, dirnames, filenames in walker:
  if filenames:
    for filename in filenames:
      counter += 1
      print str(counter)
      for file_ext in file_exts:
        if file_ext in filename:
          filepath = os.path.join(dirpath, filename)
          filesize = str(os.path.getsize(filepath))
          if not filesize in datenbank:
            datenbank[filesize] = []
          tmp = datenbank[filesize] …
Run Code Online (Sandbox Code Playgroud)

python linux hardlink duplicates nas

5
推荐指数
1
解决办法
2746
查看次数

如何追踪这个?AttributeError:'NoneType'对象在makemigrations期间没有属性'is_relation'

我从昨天开始第二次遇到一个令人困惑的错误.上次我只是把我的整个迁移弄平了,但我从来没有真正找到导致问题的原因.

所以当我尝试为我的python项目制作移动时会出现这种情况.我应该在哪里寻找错误?我觉得它实际上并不是关于迁移,而是关于views.py或models.py中的错误,即使我完全不明白为什么这会影响数据库迁移.

无论如何,这些错误都没有指向我编写的代码.这一切都在Django.那么如何找到导致该错误的错误呢?

(testenv1) C:\Users\user\eclipse_workspace\test1\test1>python manage.py makemigrations --trace
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\testenv1\lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "C:\Python27\testenv1\lib\site-packages\django\core\management\__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\testenv1\lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python27\testenv1\lib\site-packages\django\core\management\base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "C:\Python27\testenv1\lib\site-packages\django\core\management\commands\makemigrations.py", line 150, in handle
    loader.project_state(),
  File "C:\Python27\testenv1\lib\site-packages\django\db\migrations\loader.py", line 323, in project_state
    return self.graph.make_state(nodes=nodes, at_end=at_end, real_apps=list(self.unmigrated_apps))
  File "C:\Python27\testenv1\lib\site-packages\django\db\migrations\graph.py", line 409, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File …
Run Code Online (Sandbox Code Playgroud)

python django django-models django-migrations

5
推荐指数
4
解决办法
7375
查看次数

在Django 1.4中放置模板的位置?

我有点困惑,因为当我使用通用ListView类时,Django正在"appname/templates"文件夹中查找"appname/objectname_list.html".这导致:

appname/templates/appname/objectname_list.html
Run Code Online (Sandbox Code Playgroud)

如果我提供"template_name",它不再需要templates文件夹中的子文件夹.

为什么不在1.3之前的"templates"文件夹中找到objectname_list.html?我是否配置了错误或者他们是否更改了我应该放置模板的地方?在1.3中,我曾经将模板html文件直接放在"appname/templates"中,而不是使用子文件夹.

对我来说,使用另一个带有应用程序名称的子文件夹是没有意义的,模板文件夹已经在其中.或者我错过了一些有用的东西?

我在发行说明中找不到任何相关内容.

python django frameworks

4
推荐指数
1
解决办法
3039
查看次数