[英]Create a text file in python using values from a sqlite database
我正在尝试构建一个文本文件,该文件是预定义的字符串和变量值的组合,我想从一个已有的sqlite数据库中获取该文件。 文本文件每一行的一般格式如下:
约束n:值i <值j
其中n是一个整数,每行将增加一个。 值i是在表i的第x行,第y列中找到的值,值j是在表j的第x行,第y列中找到的值。 我将需要遍历数据库中当前这些表的每个值。 我的目标是使用嵌套的while循环来遍历表中的每个值,如下所示:
>>> while x < 30:
y = 1
while y < 30:
#code to populate text file goes here
n = n + 1
y = y + 1
x = x + 1
我在python方面经验有限,但是对任何建议都持开放态度。 任何人的任何投入将不胜感激。
非常感谢您,新年快乐!
保罗
最简单,未优化的方法如下:
import sqlite3
conn = sqlite3.connect('whatever.file')
c = conn.cursor
out = open('results.txt', 'w')
n = 1
for x in range(1, 30):
for y in range(1, 30):
c.execute('select value from i where row=? and column=?', (x, y))
i = c.fetchone()[0]
c.execute('select value from j where row=? and column=?', (x, y))
j = c.fetchone()[0]
out.write('constraint %d: %s < %s\n' % (n, i, j))
n += 1
out.close()
conn.close()
这种方法的主要问题是,它使用1682个单独的查询来访问sqlite,因此可能会有点慢。 主要优化将是通过仅用两个查询(通过在y
上没有where
条件和select value, column
作为select
子句)获取(例如)每个给定x
所有i
和j
值来减少查询数量。您是否需要取决于这种简单方法的性能是否已经满足您的目的。
我相信,如果您使用ORM来访问数据,而不是像Alex Martelli的答案中所示的那样直接使用SQL,那么您会更加高兴。 看来您的数据库非常简单,并且ORM可以正常工作。
我建议您尝试使用SQLAlchemy或Autumn。 SQLAlchemy功能强大且灵活,已经存在了很长时间。 秋天很简单。 任一种都可以帮助您。
另一方面,如果Alex Martelli的示例代码已经解决了您的问题,并且这是一个简单的一次性问题,那么,请抓住解决方案,然后继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.