小编emh*_*emh的帖子

pandas .to_sql 与 RDS 超时

我有一个 2200 万行 .csv 文件(~850mb),我正在尝试将其加载到 Amazon RDS 上的 postgres 数据库中。每次它都会失败(我收到超时错误),即使我将文件分割成更小的部分(每行 100,000 行),甚至当我使用chunksize.

我现在所做的就是将 .csv 作为数据帧加载,然后使用将其写入数据库df.to_sql(table_name, engine, index=False, if_exists='append', chunksize=1000)

我正在使用 sqlalchemy 中的 create_engine 来创建连接:engine = create_engine('postgresql:database_info')

我测试过写入少量数据没有psycopg2问题,但写入 1000 行大约需要 50 秒。显然对于 22m 行来说这是行不通的。

还有什么我可以尝试的吗?

python postgresql amazon-rds pandas

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

在virtualenv中运行自制程序

一个简单的问题:在virtualenv中运行自制程序是个坏主意吗?

如果是这样,有什么方法可以让我每次运行自制程序命令自动停用virtualenv?我不相信自己永远记得停用virtualenv或打开新的终端窗口。

python macos homebrew virtualenv

5
推荐指数
2
解决办法
392
查看次数

Django多对多字段导致错误

我创建了一个将对象添加到模型的函数.它看起来像这样:

def add_objects(self,obj_name_list):
    for obj in obj_name_list:
        o = Obj.objects.create(name=obj)
        self.objs.add(o)
        self.save(update_fields['objs'])
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到以下错误:

ValueError:此模型中不存在以下字段,或者是m2m字段:objs

错误来自save()通话,但我不明白为什么......在你的回答中请详细解释.谢谢!

这是追溯

.../models.pyc in add_objects(self, obj_name_list)
    125                                 o = Obj.objects.create(name=obj) #create the tag
    126                                 self.objs.add(o) #add the new tag to the foreign key
--> 127                                 self.save(update_fields=['objs'])
    128                 except TypeError:
    129                         raise TypeError("You can only add objects as a string or list")

.../models.pyc in save(self, *args, **kwargs)
     95                 if not self.pk:
     96                         is_created = True
---> 97                 super(Model, self).save(*args, **kwargs)
     98                 if is_created:
     99                         signals.model_created.send(sender=self.__class__) …
Run Code Online (Sandbox Code Playgroud)

python django many-to-many python-2.7

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

Jekyll:最简单的rakefile来创建新帖子

我刚开始使用jekyll(我是新手ruby)并且我正在尝试创建一个rakefile来自动创建帖子.

我想键入类似的内容:rake post title="x"并创建一个带有该标题和今天日期的帖子.

现在我正在看着这个rakefile,jekyll bootstrap但它看起来像我想要的东西.

我把它切成:

require 'rake'
require 'yaml'

SOURCE = "."
CONFIG = {
  'posts' => File.join(SOURCE, "_posts"),
  'post_ext' => "md",
}

# Usage: rake post title="A Title"
desc "Begin a new post in #{CONFIG['posts']}"
task :post do
  abort("rake aborted: '#{CONFIG['posts']}' directory not found.") unless FileTest.directory?(CONFIG['posts'])
  title = ENV["title"] || "new-post"
  slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
  filename = File.join(CONFIG['posts'], "#{Time.now.strftime('%Y-%m-%d')}-#{slug}.#{CONFIG['post_ext']}")
  if File.exist?(filename)
    abort("rake aborted!") if ask("#{filename} already exists. …
Run Code Online (Sandbox Code Playgroud)

ruby rake jekyll

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

为什么'rblabla'是有效的csv文件模式?

我有一个csv文件和一个读取它的函数.

我可以通过多种方式打开它,大多数这些模式产生类似的结果.

def read(mode):
    with open("file.csv", mode) as inf:
        reader = csv.reader(inf)
        for row in reader:
            print row

read('r')       #prints \r\n characters
read('rb')      #prints \r\n characters
read('rU')      #prints \n characters but not \r characters
read('rblabla') #WAT.
Run Code Online (Sandbox Code Playgroud)

我想知道为什么允许最后一个例子.它产生与正常读取模式相同的结果.

这有什么原因吗?

python csv

3
推荐指数
1
解决办法
71
查看次数

了解Pillow中的直方图()

来自文档:

im.histogram()=>列表

返回图像的直方图.直方图作为像素计数列表返回,对应于源图像中的每个像素值.如果图像具有多于一个波段,则所有波段的直方图被连接(例如,"RGB"图像的直方图包含768个值).

据我所知,红色有256个值,绿色有256个,蓝色有256个(256*3 = 768).

for i, value in enumerate(im.histogram()):
    print i, value
Run Code Online (Sandbox Code Playgroud)

生产:

0 329
1 145
... (skipping some)
256 460
... (skipping some)
767 3953
Run Code Online (Sandbox Code Playgroud)

我的问题是:这是否意味着有:
329个像素是有值R = 0, G = 0, B = 0
145个像素是有值R = 1, G = 0, B = 0
460个像素是有值R = 256, G = 1, B = 0
3953点的像素是有一个价值R = 256, G = 256, B = 256等等?

这是我应该如何阅读输出?

python histogram pillow

3
推荐指数
1
解决办法
6955
查看次数

使用 Python3 GExiv2

我正在尝试使用 GExiv2 来处理我正在编写的应用程序的元数据,但我遇到了问题。根据GExiv2 主页上的 python 示例,表达式为:

#example
exiv = GExiv2.Metadata('IMAGE FILE')
#my case
exif = GExiv2.Metadata('/home/kimothy/Temp/vuescan/Scan-140102-0001.jpg')
Run Code Online (Sandbox Code Playgroud)

这导致以下错误

[kimothy@localhost Medium Format]$ python3 multi/metadata.py
Traceback (most recent call last):
File "multi/metadata.py", line 50, in <module>
exif = GExiv2.Metadata('/home/kimothy/Temp/vuescan/Scan-140102-0001.jpg')
TypeError: GObject.__init__() takes exactly 0 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

我对错误消息指出 GExiv2.Metadata() 完全采用零参数这一事实感到困惑。GExiv2 在最新版本中是否发生了变化,还是我做错了什么?

Python版本:3.3.2

python metadata python-3.x

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

如何将元组列表转换为python中元组的一部分列表

我想转换

 l = [(1, 'a'), (2, 'b')]
Run Code Online (Sandbox Code Playgroud)

 r = [1, 2]
 p = ['a', 'b']
Run Code Online (Sandbox Code Playgroud)

显然,可以使用循环.是否可以使用lambda?任何其他方式

谢谢大卫

python tuples list

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

在OpenShift Python Hosting上的端口上打开一个Socket

我最近在Openshift上创建了一个单一的齿轮应用程序python 2.7.

我不被允许打开插座 -

返回的终端:

File "server.py", line 21, in <module>
    server_socket.bind(("0.0.0.0", PORT))
  File "/opt/rh/python27/root/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

我只需要一个小插座启动并运行 - 有谁知道如何在他们的托管上打开套接字?如果没有,什么是一个很好的替代解决方案,以便我可以托管和打开我自己的python套接字?

python sockets hosting python-2.7 openshift

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

python在新行中打印每个字符

我正在尝试打印行并在text/html文件的行中替换单词但由于python(2.7)逐字符地读取它而无法这样做.我究竟做错了什么?

这是代码和输出:

import sys

infile = open('filenmae').read()

for line in infile:
    print line
Run Code Online (Sandbox Code Playgroud)

我应该得到的输出(这里只显示第一行):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

<
!
D
O
C
T
Y
P
E
.
.
.
Run Code Online (Sandbox Code Playgroud)

python python-2.7

0
推荐指数
1
解决办法
6380
查看次数

在python中分配值,结果与预期不符

我有这个代码:

x = 'x'
y = []
y.append(x)
z = y
z.append('a')
x = 'X'

print "x:", x
print "y:", y
print "z:", z
Run Code Online (Sandbox Code Playgroud)

输出:

x: X
y: ['x', 'a']
z: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

我知道这是正确的输出,但我很难理解它产生的原因

y: ['x', 'a']
Run Code Online (Sandbox Code Playgroud)

代替

y: ['x']
Run Code Online (Sandbox Code Playgroud)

python variables reference

-1
推荐指数
1
解决办法
92
查看次数