我有这样的INSERT语句:我可以将INSERT语句拆分为几个而不重复插入行吗?
mtemp = "station, calendar, type, name, date, time"
query = "INSERT INTO table (%s) VALUES ('%s', '%s', '%s', %s, '%s', '%s');"
query = query % (mtemp, mstation, mcalendar, mtype, mname, mdate, mtime)
curs.execute(query,)
conn.commit()
的问题是,我不能让这些变量:mcalendar,mdate,修改时间在此声明。它们不是不变的价值。我将不得不在forloop中访问它们中的每一个。但是,mstation,mtype和mname的值是固定的。我试图将INSERT语句拆分为几个:对于forloop中的三个变量中的每一个,以及对于单个forloop中的三个固定值中的一个。 forloop基本上是定义何时插入行。我有一个rows1列表和一个rows2列表,rows1是一个完整的记录列表,而rows2缺少一些列表。我正在检查rows1中是否存在rows2记录。如果是,则执行INSERT语句,如果不是,则不执行任何操作。
我跑的代码,并发现了两个问题:
- 比它应该是它的方式插入更多的行。它应该插入不超过240行,因为每个传感器每天只有240次发生。 (我想知道是不是因为我写了太多的循环以便插入行)。现在它有400多个新的行。
- 在这些新的行被插入到表中,他们只有在固定值的列中的值。对于我使用单个forloop插入数据的三个数据,他们根本没有任何价值。
希望这里有人给我一些提示。提前致谢!如果需要,我可以在此放置更多代码。我甚至不确定我是否在正确的轨道上。
发布当前的代码可能会有所帮助 – 2011-03-25 04:59:17
现在我有工作在同一个日期!我插入了一天所需要的所有行,以便每个传感器每天有240条记录。我想要做的就是让它每天都在工作。但是,如果我使用:在日期中的日期:....它重复循环为每个相同的日期,而不是不同的日期。我怎么能告诉它做的:日期不同的日期:...? – widget 2011-03-25 19:28:21
请勿使用字符串格式化运算符('%')将参数放入查询中。请参阅http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters如何正确执行此操作。 – 2011-03-26 20:07:34