簡體   English   中英

唯一鍵和Python字典

[英]Unique Keys and Python Dictionary

以下是相關功能的代碼:

def populateSubscribers(csvfile, db):
  conn = sqlite3.connect(db)
  conn.text_factory = str  #bugger 8-bit bytestrings
  cur = conn.cursor()

  subscriber_dict = {}

  # read values from tab-delimited csv file
  reader = csv.reader(open(csvfile, "rU"), delimiter = '\t')
  for Number, Name, Message, Datetime, Type in reader:
    if str(Number)[:1] == '1':
      tmpNumber = str(Number)[1:]
      Number = int(tmpNumber)

      # check to ensure name/number not null
      if Number and Name:
        # add unique subscribers to dictionary
        subscriber_dict[Number] = Name
      else:
        print 'Subscriber missing name or number'

  # insert unique subscribers into subscriber table
  for number, name in subscriber_dict.items():
    cur.execute('INSERT OR IGNORE INTO subscriber (name, phone_number) VALUES (?,?)', (name, number))
    conn.commit()

  cur.close()
  conn.close()
  print '...Successfully populated subcriber table.'

它正在從csv文件中讀取訂戶名稱和電話號碼,然后應該將每個唯一訂戶的條目寫入數據庫。 我希望電話號碼是鍵/值對中的鍵,因為它是唯一的。 但是由於某種原因,它沒有從數據中讀取所有數字,因此缺少一些訂戶。 如果我將名稱指定為密鑰,那么它會像預期的那樣丟失(對所有未知數進行重復數據刪除),但是作為密鑰的電話號碼完全缺少一些數字。 關於如何解決這里的邏輯有什么想法?

在我看來, if str(Number)[:1] == '1':可能正在過濾掉您的某些數據。

在其上添加一個else,並打印出所有拒絕的內容。 這些可能是出問題了。

無論哪種方式,請縮減您的輸入數據並查找未使用的數據。 如果沒有看到相應的數據和你說這些工作的替代,很難在這里拖住確切原因。

暫無
暫無

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

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