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

例如,A包含:
而B包含:
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相关联.
我正在拼命尝试让 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)
以下是我采取的步骤以及我在研究中发现的内容:
当前在我的实例上运行的 python 版本是 python 2.6.8,认为 tkinter 可能不会附带此版本,我决定使用此http://www.hosting.com/support将 python 版本安装到 3.2(保留 2.6.8) /linux/安装-python-3-on-centosredhat-5x-from-source/
然后运行 python 3.2 我遇到了同样的问题,它告诉我没有名为 tkinter 的模块。
然后我尝试使用很多不同的命令安装 tkinter:
百胜安装 tkinter
百胜安装 Tkinter
yum 安装 python-tk
百胜安装 python3-tk
yum 安装 tk-devel
yum 安装 gtk2-devel
百胜安装 pygtk2-devel
所有这些都给了我相同的结果:
No package (name of the package) available.
Run Code Online (Sandbox Code Playgroud)
另外,在 /opt 中的 python 3.2 文件夹(我安装的第二个)中,有一个名为 …
(我正在研究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)
这个想法是加快一些测试功能,打开/读取/写入磁盘上的一些短文件; 有没有办法确保这些操作发生在内存中?
我正在开发一个项目,我必须根据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
说我有列表元素content = ['121\n', '12\n', '2\n', '322\n']和列表与功能fnl = [str.strip, int].
所以我需要fnl从content顺序地将每个函数应用到每个元素.我可以通过几个电话来做到这一点map.
其他方式:
xl = lambda func, content: map(func, content)
for func in fnl:
content = xl(func, content)
Run Code Online (Sandbox Code Playgroud)
我只是想知道是否有更多的pythonic方式来做到这一点.
没有单独的功能?通过单一表达?
我正在玩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?我应该手动构建字节字符串吗?
好像我误解了一些东西.
我需要创建多行提示。
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)
怎么可能呢?
在我的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) 说我有下一个代码:
try:
...
except (some_lib.LongNameError1, lib.LongNameError2, lib.LongNameError3, lib.LongNameError3) as e:
print str(e)
Run Code Online (Sandbox Code Playgroud)
如您所见,异常行太长了。
我需要对它进行拆分,以满足大约79个字符的最大行长度的要求,并同时保持可读性。
实际上,我尝试浏览标准库代码示例,但是没有找到合适的示例。
我正在尝试使用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 ×8
python-2.7 ×4
python-3.x ×2
absolute ×1
amazon-ec2 ×1
batch-file ×1
cmd ×1
command-line ×1
encoding ×1
exception ×1
file ×1
html ×1
lambda ×1
loops ×1
parsing ×1
sql ×1
tkinter ×1
unicode ×1
union ×1
webapp2 ×1
windows ×1
xpath ×1