我想在Python中捕获并记录MySQL警告.例如,如果'DROP DATABASE IF EXISTS database_of_armaments'在没有此类数据库时提交,MySQL会向标准错误发出警告.我想抓住这个并记录它,但即使在try/else语法中,仍然会出现警告消息.
try/except语法确实捕获了MySQL错误(例如,提交类似的错字'DRP DATABASE database_of_armaments').
我已经尝试过<<except.MySQLdb.Warning>>- 没有运气.我查看了警告模块,但不明白如何将其合并到try/else语法中.
具体来说,我如何使以下(或类似的东西)工作.
GIVEN:数据库'database_of_armaments'不存在.
try:
cursor.execute('DROP DATABASE IF EXISTS database_of_armaments')
except: <<WHAT DO I PUT HERE?>>
print 'There was a MySQL warning.'
<<AND what goes here if I want to get and manipulate information about the warning?>>
Run Code Online (Sandbox Code Playgroud)
更新:
感谢您的评论.我试过这些并且它们没有用 - 但是我一直在使用我为连接编写的DatabaseConnection类,以及要执行的runQuery()方法.当我在类外部创建一个连接和光标时,try/except异常捕获了"编程错误",除了MySQLdb.ProgrammingError工作的广告.
所以现在我必须弄清楚我的类编码有什么问题.
谢谢您的帮助.
我有一个用C编写的服务器,我想在python中编写一个客户端.当python客户端想要发送文件,然后是文件的内容和字符串"end some_file"时,它将发送一个字符串"send some_file".这是我的客户端代码:
file = sys.argv[1]
host = sys.argv[2]
port = int(sys.argv[3])
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect((host,port))
send_str = "send %s" % file
end_str = "end %s" % file
sock.send(send_str)
sock.send("\n")
sock.send(open(file).read())
sock.send("\n")
sock.send(end_str)
sock.send("\n")
Run Code Online (Sandbox Code Playgroud)
问题是这样的:
服务器从recv接收"send some_file"字符串
在第二个recv中,文件的内容和"结束文件"字符串一起发送
在服务器代码中,缓冲区的大小是4096.我在尝试发送小于4096k的文件时首先注意到这个错误.如何确保服务器独立接收字符串?
我知道UDDI和Ws-Discovery之间的区别(熟知搜索服务与广播的位置).但我的问题是:在WCF中发现Web服务的最简单方法是什么?最简单的意思是我已经在WCF中实现了什么并且现在可以使用了?我没有在WCF中看到UDDI或Ws-Discovery的任何内置实现.
您是否有任何链接或经验可以在WCF中分享这两个协议?
UPDATE
现在我正在考虑三种解决方案,等待.NET 4.0上的WS-discovery,或者可能使用WCF提供的Peer to Peer绑定创建自己的发现绑定.这样我就可以广播请求.或者使用eed3si9n链接提供的实现.
我认为我会做一个网关接口,以便轻松改变后面的实现.
在我的Web项目的业务对象编辑器页面中,我在对象插入或更新后向管理员发送通知电子邮件.但是,我想发送另一个aspx页面(Notification.aspx)的html输出而不是发送纯文本邮件,我只是为此目的而准备.
首先我想,我可以创建一个Notification.aspx的实例,然后使用它的RenderControl方法来获取输出.
但是,在Editor.aspx页面的代码隐藏中,我甚至无法达到Notification的创建新实例的引用.
我想知道在另一个页面中加载和呈现页面的最佳实践是什么...
谢谢.
我正在公司网站上工作,我认为我应该开始使用CSS框架.有很多CSS框架,最常用的是什么,为什么人们会选择使用它而不是其他框架?
对于我的汇编语言类,我们使用DPMI编写DOS程序.不幸的是,我无法一直访问32位Windows机器.我确实在我使用的每台计算机上安装了一个Debian虚拟机.
我安装了DOSBox和DOSEMU.有什么办法可以在Linux而不是DOS中汇编和编译程序吗?我正在使用nasm,所以我似乎没有任何问题得到它汇编DOS格式.但是,我无法通过编译器使用我的C代码运行它并获得DOS可执行文件(使用gcc或MinGW).
有没有办法做到这一点,或者我几乎要在DOS下安装所有工具?
我正在寻找使用VS Studio 2005/2008改进重构技术的经验/工具.
目前我只使用标准的重构菜单选项:
Rename ...
Extract Method ...
Encapsulate Field ...
alt text http://img208.imageshack.us/img208/5852/vsrefactor.gif
我正在使用PyAMF将动态生成的大图像从Flex传输到Django.在Django方面,我收到encodedb64数据作为参数:
我的物品模型作为图像场.我无法做的是将数据保存为File Django Field.
def save_item(request, uname, data):
""" Save a new item """
item = Item()
img = cStringIO.StringIO()
img.write(base64.b64decode(data))
myFile = File(img)
item.preview.save('fakename.jpg', myFile, save=False)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我从StringIO的File对象遗漏了一些属性,如模式,名称等.
我还认为使用StringIO会将图像数据完全加载到内存中,这很糟糕所以我可能会放弃AMF来处理这个特殊情况并使用POST.
你怎么看 ?
我目前正在将一个小型C项目从autotools转换为CMake.
在旧的configure.in我使用以下行检查每个标头和库函数是否存在:
# Checks for header files
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h time.h math.h sys/stat.h errno.h unistd.h fcntl.h signal.h])
# Checks for library functions
AC_FUNC_FORK
AC_CHECK_FUNCS([time localtime mktime gmtime exit fork chdir atol signal])
AC_FUNC_STRFTIME
Run Code Online (Sandbox Code Playgroud)
这就是许多autotools项目做AFAIK的事情.
尽管编译器已经检查了必要的头文件并且链接器检查了库函数,但我的代码仍然需要在配置阶段完成这些检查以正确设置它的编译标志#ifdef HAVE_FOOBAR和类似.
在这种情况下,使用CMake检查标头/功能的最佳做法是什么?