使用SQLite3和Python 2.5,我试图遍历列表并根据项目的名称从数据库中提取项目的权重.
我试过用"?" 建议参数替换以防止SQL注入,但它不起作用.例如,当我使用:
for item in self.inventory_names:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", item)
self.cursor.close()
Run Code Online (Sandbox Code Playgroud)
我收到错误:
sqlite3.ProgrammingError:提供的绑定数量不正确.当前语句使用1,并且提供了8.
我相信这是由数据库的初始创建引起的; 我制作的实际创建数据库的模块确实有8个绑定.
cursor.execute("""CREATE TABLE Equipment
(id INTEGER PRIMARY KEY,
name TEXT,
price INTEGER,
weight REAL,
info TEXT,
ammo_cap INTEGER,
availability_west TEXT,
availability_east TEXT)""")
Run Code Online (Sandbox Code Playgroud)
但是,当我对每个项目名称使用不太安全的"%s"替换时,它可以正常工作.像这样:
for item in self.inventory_names:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item)
self.cursor.close()
Run Code Online (Sandbox Code Playgroud)
当我只调用一个绑定时,我无法弄清楚为什么它认为我有8个绑定.我该如何解决?
那么有人如何创建音乐可视化工具呢?我看过Google,但我还没有找到任何谈论实际编程的内容; 主要是链接到插件或可视化应用程序.
我使用iTunes,但我意识到我需要Xcode为此编程(我目前在伊拉克部署并且无法下载那么大的文件).所以现在我只是对学习它背后的"理论"感兴趣,比如处理频率和其他所需要的东西.
我没有在别处找到答案,而且似乎还没有在SO上提出这个问题.
在wxPython中创建事件绑定时,是否可以将其他参数传递给事件?例如,这是正常的方式:
b = wx.Button(self, 10, "Default Button", (20, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
def OnClick(self, event):
self.log.write("Click! (%d)\n" % event.GetId())
Run Code Online (Sandbox Code Playgroud)
但是有可能将另一个参数传递给该方法吗?这样该方法可以判断多个小部件是否正在调用它但仍然返回相同的值?
它将大大减少复制和粘贴相同的代码,但具有不同的调用者.
我确定之前已经问过,但我找不到它.
使用基于浏览器的界面进行独立应用程序与使用普通GUI框架相比有哪些好处/限制?
我正在研究一个目前使用wxPython实现GUI的Python程序.该应用程序只是用户输入表单和对话框.我正在考虑转移到PyQt,因为它有小部件(为了将来的扩展),然后我意识到我可能只是使用浏览器做很多相同的事情.
该应用程序目前不需要访问Internet,但将来可能会有这种情况.如果我基于浏览器,我正在考虑将Karrigell用于Web框架.
编辑为了澄清,截至目前,该应用程序将基于浏览器,而不是基于Web.所有信息都将本地存储在客户端计算机上; 不需要进行服务器调用,也不需要访问Internet(虽然可能会在以后出现).它只是一个浏览器GUI而不是wxPython/PyQt GUI.希望有道理.
我正在尝试将字符串值列表输出为2列格式.将字符串列表制作成"普通文本"的标准方法是使用string.join方法.但是,它只需要2个参数,因此我只能使用"\n"创建一个列.我认为尝试创建一个只需在列之间添加选项卡的循环就可以了,但逻辑无法正常工作.
我发现一个ActiveState页面有一个相当复杂的方法,但它是从4年前开始的.现在有一种简单的方法吗?
编辑这是我要使用的列表.
skills_defs = ["ACM:Aircraft Mechanic", "BC:Body Combat", "BIO:Biology",
"CBE:Combat Engineer", "CHM:Chemistry", "CMP:Computers",
"CRM:Combat Rifeman", "CVE:Civil Engineer", "DIS:Disguise",
"ELC:Electronics","EQ:Equestrian", "FO:Forward Observer",
"FOR:Forage", "FRG:Forgery", "FRM:Farming", "FSH:Fishing",
"GEO:Geology", "GS:Gunsmith", "HW:Heavy Weapons", "IF:Indirect Fire",
"INS:Instruction", "INT:Interrogation", "JP:Jet Pilot", "LB:Longbow",
"LAP:Light Aircraft Pilot", "LCG:Large Caliber Gun", "LNG:Language",
"LP:Lockpick", "MC:Melee Combat", "MCY:Motorcycle", "MEC:Mechanic",
"MED:Medical", "MET:Meterology", "MNE:Mining Engineer",
"MTL:Metallurgy", "MTN:Mountaineering", "NWH:Nuclear Warhead",
"PAR:Parachute", "PST:Pistol", "RCN:Recon", "RWP:Rotary Wing Pilot",
"SBH:Small Boat Handling","SCD:Scuba Diving", "SCR:Scrounging",
"SWM:Swimming", "TW:Thrown Weapon", "TVD:Tracked Vehicle …
Run Code Online (Sandbox Code Playgroud) 我还没有找到这个特定问题的答案; 也许没有一个.但我一直想知道它.
当您在文本编辑器中查看二进制文件时,究竟是什么导致二进制文件显示为"乱码"?加密文件也是如此.尝试将文件的二进制值转换为ASCII吗?是否可以转换视图以显示原始二进制值,即显示组成文件的1和0?
最后,有没有办法确定哪个程序将正确打开数据文件?很多时候,特别是对于Windows,文件是孤立的,或者与特定程序无关.在文本编辑器中打开它有时会告诉你它属于哪里,但由于胡言乱语,大部分时间都没有.如果扩展程序未提供任何信息,您如何确定它所属的程序?
我创建了一个Python模块,用于创建和填充多个SQLite表.现在,我想在一个程序中使用它,但我真的不知道如何正确调用它.我发现的所有教程基本上都是"内联",即他们以线性方式使用SQLite,而不是如何在生产中实际使用它.
我正在尝试做的是检查方法是否已经创建了数据库.如果是这样,那么我可以使用它.如果没有,则引发异常,程序将创建数据库.(或者使用if/else语句,以较好者为准).
我创建了一个测试脚本,看看我的逻辑是否正确,但它不起作用.当我创建try语句时,它只是创建一个新数据库,而不是检查是否已存在.下次运行脚本时,即使我尝试捕获异常,也会收到表已存在的错误.(我之前没有使用过try/except,但认为这是学习的好时机).
是否有任何关于在操作上使用SQLite的好教程或有关如何编写代码的任何建议?我查看了pysqlite教程和我找到的其他人,但他们没有解决这个问题.
在Python中使用IF语句时,必须执行以下操作才能使"级联"正常工作.
if job == "mechanic" or job == "tech":
print "awesome"
elif job == "tool" or job == "rock":
print "dolt"
Run Code Online (Sandbox Code Playgroud)
有没有办法让Python在检查"等于"时接受多个值?例如,
if job == "mechanic" or "tech":
print "awesome"
elif job == "tool" or "rock":
print "dolt"
Run Code Online (Sandbox Code Playgroud) 我一直在使用类,当我编写一个方法时,我将所有变量引用为self,例如self.foo.
但是,我正在查看wxPython in Action一书,并注意到"self"并未一直使用.例如:
import wx
class TextFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Text Entry Example',
size=(300, 100))
panel = wx.Panel(self, -1)
basicLabel = wx.StaticText(panel, -1, "Basic Control:")
basicText = wx.TextCtrl(panel, -1, "I've entered some text!",
size=(175, -1))
basicText.SetInsertionPoint(0)
pwdLabel = wx.StaticText(panel, -1, "Password:")
pwdText = wx.TextCtrl(panel, -1, "password", size=(175, -1),
style=wx.TE_PASSWORD)
sizer = wx.FlexGridSizer(cols=2, hgap=6, vgap=6)
sizer.AddMany([basicLabel, basicText, pwdLabel, pwdText])
panel.SetSizer(sizer)
Run Code Online (Sandbox Code Playgroud)
下面的一个确实使用"自我".
import wx
class ButtonFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Button Example',
size=(300, 100))
panel = …
Run Code Online (Sandbox Code Playgroud) 我正在查看Python文档,发现有4-5个不同版本的popen(),例如os.popen(),os.popen2()等.
除了一些包括stderr而另一些不包括stderr的事实之外,它们之间有什么区别以及何时使用每一个?文档并没有真正解释得很好.
python ×8
sqlite ×2
wxpython ×2
binaryfiles ×1
boolean ×1
browser ×1
comparison ×1
events ×1
exception ×1
formatting ×1
itunes ×1
popen ×1
string ×1
subprocess ×1