首先要说明我是一名业余程序员。
在连接到MySQL DB的python / wxPython中构建个人软件
我的问题:
尝试编写一个将从导入文件中访问类的表单。 表单一次访问数据库上的4个相关表。
这些表中的三(3)个总是相同的。第四个可以是两个表中的一个。
始终可访问的表格:会话,有氧运动和笔记 可以变化的表格是:物理或机器
我已将数据字段放在上面提到的每个表的wx.Panel类中。 mainForm的菜单调用输入表单,引用物理参数或机器参数。将显示相应的表单及其数据字段。
我的问题是我无法访问这些导入的字段以从数据库加载数据。
我的代码部分:
Mainform:dailyResultsV2.py
import inputForm as IF
# Menu Event:
def OnShowBikeRecs(自我,事件):
self.bikeedit = IF.inputForm(None, -1, "Bike Record Management", size=(925,650), name="bike")
self.bikeedit.Show()
self.bikeedit.Center()
被叫表格:inputForm.py
class inputForm(wx.Frame):
def __init__(self, parent, *args, **kwargs):
wx.Frame.__init__(self, parent, *args, **kwargs)
self.EXERCISE = kwargs['name']
# create a panel
self.panel = wx.Panel(self)
self.panel.BackgroundColour = (200, 230, 250)
self.filterSetup()
self.sessionSection = IFC.tblSession(self.panel,-1)
self.sessionSection.BackgroundColour = (200, 230, 250)
if self.EXERCISE == 'walk':
self.physicalSection = IFC.tblPhysical(self.panel,-1)
else:
self.machineSection = IFC.tblMachine(self.panel,-1)
self.cardioSection = IFC.tblcardio(self.panel,-1)
self.notesSection = IFC.tblNotes(self.panel,-1)
self.buttonSetup()
self.topsizer()
上一个类创建一个输入表单,其中包含物理表或机器表中的所有字段。
我的问题如何访问这些字段以从数据库添加数据或更新数据库。 (一方面注意这是一个体育训练数据库)。
导入类的示例:inputFormClasses.py
class tblMachine(wx.Panel):
def __init__(self, parent, *args, **kwargs):
wx.Panel.__init__(self, parent, *args, **kwargs)
self.BackgroundColour = (200, 230, 250)
# The columns
# machine_ID - not displayed machine_session_FK - not displayed machine_level - not displayed
# machine_Type_FK machine_Distance machine_AvgSpeed machine_MaxSpeed machine_Duration machine_ODO machine_RunFK - ComboBox
self.runNames = [] # ComboBox List
self.machineLabel_st = wx.StaticText(self, -1, "Machine", style=wx.ALIGN_LEFT)
self.machineType_st = wx.StaticText(self, -1, "Type", style=wx.ALIGN_LEFT)
self.machineType_tc = wx.TextCtrl(self, -1, value="Biking", style=wx.TE_CENTRE)
self.machineDistance_st = wx.StaticText(self, -1, "Distance", style=wx.ALIGN_LEFT)
self.machineDistance_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
self.machineAvgSpeed_st = wx.StaticText(self, -1, "Avg. Speed", style=wx.ALIGN_LEFT)
self.machineAvgSpeed_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
self.machineMaxSpeed_st = wx.StaticText(self, -1, "Max Speed", style=wx.ALIGN_LEFT)
self.machineMaxSpeed_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
self.machineDuration_st = wx.StaticText(self, -1, "Duration", style=wx.ALIGN_LEFT)
self.machineDuration_mtc = masked.TimeCtrl(self, -1, fmt24hr=True)
self.machineODO_st = wx.StaticText(self, -1, "Odometer", style=wx.ALIGN_LEFT)
self.machineODO_tc = wx.TextCtrl(self, -1, style=wx.TE_CENTRE)
self.machineRun_st = wx.StaticText(self, -1, "Run", style=wx.ALIGN_LEFT)
self.machineRun_cbo = wx.ComboBox(self, -1, choices = self.getRunNames(self.runNames), style=wx.CB_READONLY) # get the list of runs for comboBox
# create machine sizer
self.MachineSizer = wx.GridBagSizer(hgap=5, vgap=5)
如何访问例如:我的表单上的self.machineType_tc?
答案 0 :(得分:0)
查看sqlite3库:我用它来做类似的事情:
import sqlite3
def insert_user(cursor,username,password,port,steps,lat,long):
try:
cursor.execute("INSERT INTO mydb VALUES(?,?,?,?,?,?)", (username,password,port,steps,lat,long))
return "Success"
except Exception as e:
print e
return "Failure"
我希望这会有所帮助。