小编xiº*_*xiº的帖子

多个表之间的SQL映射

这是一个SQL设计问题.首先,设置.我有三张桌子:

  1. A,根据对链接服务器的查询自动填充.此表中的数据无法更改;
  2. B,只有十几行,包含As的集合名称;
  3. AtoB,是As组织成命名集合的映射表,两列都有外键;

SQL映射表

例如,A包含:

  1. 长颈鹿
  2. 猫头鹰

而B包含:

  1. 西雅图动物园
  2. 圣何塞动物园

AtoB包含:

1,1(西雅图长颈鹿)
2,1(西雅图猫头鹰)
3,1(西雅图老虎)
2,2(圣何塞猫头鹰)

现在,问题是:

我被要求在A中包含一些在A中找不到的项目.因此,我创建了一个表C,其中包含与A相同的标识和名称列,并填充它.与前面的例子一致,假设C包含:

问题是,如何在AtoB中包含C中的项目?如果我需要在西雅图动物园中加入一条龙怎么办?

我的第一直觉是天真,就是创建一个包含A和C联合的视图V,并将AtoB修改为VtoB.这就是我的天真得到回报的地方:一个人无法为视图创建外键.

我怀疑有一种标准的,正确的方法可以将一个或多个A OR C与B相关联.

sql union database-design foreign-key-relationship

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

安装 tkinter 并使其在 AWS EC2 实例上运行

我正在拼命尝试让 tkinter 在我的 EC2 实例上工作。

我只想能够在 python 中执行这一行:

from tkinter import * 
Run Code Online (Sandbox Code Playgroud)

或者这个适用于旧版本,根据我在 python 3.x 之前的理解,你必须使用大写 T

from Tkinter import *
Run Code Online (Sandbox Code Playgroud)

现在这两个命令都会返回以下内容:

ImportError: No module named _Tkinter
Run Code Online (Sandbox Code Playgroud)

以下是我采取的步骤以及我在研究中发现的内容:

所有这些都给了我相同的结果:

No package (name of the package) available.
Run Code Online (Sandbox Code Playgroud)

另外,在 /opt 中的 python 3.2 文件夹(我安装的第二个)中,有一个名为 …

python tkinter amazon-ec2 python-3.x

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

在内存中打开一个文件

(我正在研究Python 3.4项目.)

有一种方法可以在内存中打开(sqlite3)数据库:

    with sqlite3.connect(":memory:") as database:
Run Code Online (Sandbox Code Playgroud)

open()函数是否存在这样的技巧?就像是 :

   with open(":file_in_memory:") as myfile:
Run Code Online (Sandbox Code Playgroud)

这个想法是加快一些测试功能,打开/读取/写入磁盘上的一些短文件; 有没有办法确保这些操作发生在内存中?

python file python-3.x

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

Python:基于绝对XPath解析HTML元素

我正在开发一个项目,我必须根据URL解析20个不同的HTML页面,我想从所有这些页面获取一些信息.页面具有不同的结构,所需信息位于每个站点的不同位置.

我想我可以试试Python lxml模块.由于信息可以在每个站点的不同位置找到,我很懒惰将20*X不同的注册表放在一起.表达式,我认为对这些元素使用绝对XPath是个好主意.通过这种方式,我可以简单地利用Chrome浏览器的复制XPath功能,并为我的解析器提供每个HTML元素的清晰路径,而且我不需要编写很多代码.

我找不到任何显示我如何在Python中使用绝对XPath引用HTML元素的示例.一些评论说,而不是绝对路径,最好使用相对,但不能真正解释原因.但同样,引用具有相对XPath的元素意味着一些编码再次工作.

只是为了使它更复杂这20个站点是unicode.

有没有办法在Python中引用具有绝对XPath的HTML元素并像这样获取其文本值?

/html/body/div[1]/table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]/div/table/tbody/tr[3]/td[2]/table/tbody/tr[2]/td/table/tbody/tr/td[2]/font/b
Run Code Online (Sandbox Code Playgroud)

...它将返回HTML元素的文本值.

到目前为止,我得到了以下代码,它适用于相对XPath,但当我使用绝对时,它给我下面的错误.

import urllib2
from lxml import html
from bs4 import UnicodeDammit


response = urllib2.urlopen('http://oneofthesites.com')
content = response.read()
doc = UnicodeDammit(content, is_html=True)
parser = html.HTMLParser(encoding=doc.original_encoding)
root = html.document_fromstring(content, parser=parser)
data = root.find('/html/body/div[1]/table/tbody/tr[2]/td[2]/table/tbody/tr/td[2]/div/table/tbody/tr[1]/td[2]/b').text_content()
print(data)
Run Code Online (Sandbox Code Playgroud)

而错误是:

SyntaxError: cannot use absolute path on element
Run Code Online (Sandbox Code Playgroud)

也许我的基本概念是错误的,所以关于如何处理这些页面的任何其他想法都是受欢迎的!

感谢您的帮助,g0m3z

html python xpath parsing absolute

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

Python:将函数列表应用于列表中的每个元素

说我有列表元素content = ['121\n', '12\n', '2\n', '322\n']和列表与功能fnl = [str.strip, int].

所以我需要fnlcontent顺序地将每个函数应用到每个元素.我可以通过几个电话来做到这一点map.

其他方式:

xl = lambda func, content: map(func, content)
for func in fnl:
    content = xl(func, content) 
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有更多的pythonic方式来做到这一点.

没有单独的功能?通过单一表达?

python lambda python-2.7

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

在Windows上使用cp1251和utf-8的Unicode

我正在玩unicodepython.

所以有一个简单的脚本:

# -*- coding: cp1251 -*-

print '??????'.decode('cp1251')
print unicode('??????', 'cp1251')
print unicode('??????', 'utf-8')
Run Code Online (Sandbox Code Playgroud)

在cmd中我已将编码切换为Active code page: 1251.

还有输出:

????????????
????????????
??????
Run Code Online (Sandbox Code Playgroud)

我有点困惑.

由于我已经指定了编码,cp1251我希望它能被正确解码.

但结果是有一些垃圾代码点被解释.据我所知,这'??????'只是一个字节: '\xd1\x8e\xd0\xbd\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb4'.

但有一种方法可以在终端中获得正确的输出cp1251?我应该手动构建字节字符串吗?

好像我误解了一些东西.

python unicode encoding python-2.7

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

批处理文件中的多行提示

我需要创建多行提示。

set /p choice="Press '1' for start host; Press '0' for exit;"
Run Code Online (Sandbox Code Playgroud)

输出应该是:

Press '1' for start host;
Press '0' for exit;
Run Code Online (Sandbox Code Playgroud)

怎么可能呢?

windows command-line cmd batch-file

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

使用谷歌应用引擎在python中获取大量网址

在我的RequestHandler子类中,我试图获取URL的范围:

class GetStats(webapp2.RequestHandler):
    def post(self): 

    lastpage = 50   
    for page in range(1, lastpage):
        tmpurl = url + str(page)
        response = urllib2.urlopen(tmpurl, timeout=5)
        html = response.read()
        # some parsing html
        heap.append(result_of_parsing)  

    self.response.write(heap)
Run Code Online (Sandbox Code Playgroud)

但它适用于~30个网址(页面加载时间很长但是有效).如果超过30,我收到错误:

错误:服务器错误

服务器遇到错误,无法完成您的请求.

请在30秒后再试一次.

有什么方法可以获取很多网址吗?可能更优或更好?最多几百页?

更新:

我使用BeautifulSoup来解析每一页.我在gae日志中找到了这个追溯:

Traceback (most recent call last):
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 267, in Handle
result = handler(dict(self._environ), self._StartResponse)
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
  File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.2/webapp2.py", line 1102, in __call__
return handler.dispatch() …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine python-2.7 webapp2

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

分割几个例外的长线的最佳方法是什么?

说我有下一个代码:

try:
    ...
except (some_lib.LongNameError1, lib.LongNameError2, lib.LongNameError3, lib.LongNameError3) as e:
    print str(e)
Run Code Online (Sandbox Code Playgroud)

如您所见,异常行太长了。

我需要对它进行拆分,以满足大约79个字符的最大行长度的要求,并同时保持可读性。

实际上,我尝试浏览标准库代码示例,但是没有找到合适的示例。

python exception python-2.7

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

如何在python中存储变量?

我正在尝试使用while循环在python中执行倒计时功能.基本上我希望它再次倒计时,但我遇到了存储初始值的问题.

def function(n):
    n = stored
    while stored < 0:
        print stored,
        function(stored-1)
   while stored > 0 & < function:
       print stored
       function(stored+1)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

python loops

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