簡體   English   中英

使用sqlite數據庫中的值在python中創建文本文件

[英]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所有ij值來減少查詢數量。您是否需要取決於這種簡單方法的性能是否已經滿足您的目的。

我相信,如果您使用ORM來訪問數據,而不是像Alex Martelli的答案中所示的那樣直接使用SQL,那么您會更加高興。 看來您的數據庫非常簡單,並且ORM可以正常工作。

我建議您嘗試使用SQLAlchemy或Autumn。 SQLAlchemy功能強大且靈活,已經存在了很長時間。 秋天很簡單。 任一種都可以幫助您。

http://www.sqlalchemy.org/

http://autumn-orm.org/

另一方面,如果Alex Martelli的示例代碼已經解決了您的問題,並且這是一個簡單的一次性問題,那么,請抓住解決方案,然后繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM