0
我試圖寫這個函數不工作,有人可以幫我找出原因嗎?在Python中創建一個SQLite查詢和插入函數
我看過示例HERE,但它與我所擁有的有點太不一樣了。
字符串有些問題,我不確定如何正確放置SQLite查詢字符串,我創建的數據庫沒有被填充。
這裏是什麼樣的功能,看起來像至今:
def checkInsert(db_c, column, table, item, db_db):
strng1 = ("SELECT %s FROM %s WHERE %s=?", (item,)) % (column, table, column)
strng2 = ("INSERT INTO %s (%s) VALUES(?);", (item,)) % (table, column)
db_c.execute(strng1)
check = db_c.fetchone()
if check is None:
db_c.execute(strng2)
db_db.commit()
else:
pass
目前我寫出來,下面所有的腳本:
dog = "mastiff"
cat = "jaguar"
bird = "parrot"
mem_c.execute("SELECT dog FROM dogs WHERE dog=? ", (dog,))
dog_check = mem_c.fetchone()
if dog_check is None:
mem_c.execute("INSERT INTO dogs (dog) VALUES(?);", (dog,))
mem_db.commit()
else:
pass
mem_c.execute("SELECT cat FROM cats WHERE cat=? ", (cat,))
cat_check = mem_c.fetchone()
if cat_check is None:
mem_c.execute("INSERT INTO cats (cat) VALUES(?);", (cat,))
mem_db.commit()
else:
pass
mem_c.execute("SELECT bird FROM birds WHERE bird=? ", (bird,))
bird_check = mem_c.fetchone()
if bird_check is None:
mem_c.execute("INSERT INTO birds (bird) VALUES(?);", (bird,))
mem_db.commit()
else:
pass
如果我得到這個權利,函數應該允許我採取上面的腳本,而不是簡單地寫出來,像這樣:
dog = "mastiff"
cat = "jaguar"
bird = "parrot"
checkInsert(mem_c, 'dog', 'dogs', dog, mem_db)
checkInsert(mem_c, 'cat', 'cats', cat, mem_db)
checkInsert(mem_c, 'bird', 'birds', bird, mem_db)
你有沒有考慮過使用Django及其強大的ORM。 IRL你可能有困難的時候試圖自己實現所有的東西,而不是使用框架,尤其是像Django那樣好。 – micgeronimo 2014-12-04 06:58:08
你的問題是什麼?到目前爲止,你只是告訴我們你想做什麼......然而,一個明顯的錯誤是''column,table,column''實際上應該是'strng1'定義中的'(column,table,column)'。 'strng2'行中存在相同的錯誤。 – sebastian 2014-12-04 07:26:00
抱歉,試圖編寫一個函數,它目前不工作,試圖找出原因。 – mdandr 2014-12-04 13:06:12