2015-11-14 103 views
0

我正在Python中練習使用SQLite3。 Python的版本是2.7而我正在使用mac os。Python SQLite3不起作用

我找不到任何問題與我的代碼... 當我運行它時,我沒有得到任何語法錯誤。 我的編碼假設打印出數據庫的每個元素。 它根本不打印任何東西。

import sqlite3 

createDb = sqlite3.connect('sample.db') 

queryCurs = createDb.cursor() 

def createTable(): 
    queryCurs.execute('''CREATE TABLE customers 
    (id INTEGER PRIMARY KEY, name TEXT, street TEXT, city TEXT, state TEXT, balance REAL)''') 

def addCust(name, street, city, state, balance): 
    queryCurs.execute('''INSERT INTO customers (name, street, city, state, balance)) 
    VALUES (?,?,?,?,?) ''',(name, street, city, state, balance)) 

def main(): 
    createTable() 

    addCust('test1','123 mel','vancouver','bc', 10000000.00) 
    addCust('test2','145 joy','ottawa','on', 10000000.00) 
    addCust('test3','521 tick','toronto','on', 10000000.00) 
    addCust('test4','5832 tock','burnaby','bc', 10000000.00) 

    createDb.commit() 

    queryCurs.execute('SELECT * FROM customers') 

    for i in queryCurs: 
     print "\n" 
     for j in i: 
      print j 

你能告訴我我做錯了什麼嗎?

+1

你在哪裏調用'main()'? –

回答

1

您從未致電您的main()功能。 Python不會自動調用函數,main()沒有特別的意義。你一個「腳本測試」通常會添加一些:

if __name__ == '__main__': 
    main() 

你的模塊調用文件時運行的腳本功能的結束;當您的文件作爲模塊導入時,__name__包含模塊名稱而不是'__main__'

當你這樣做,你會看到你有一個SQL語法錯誤:

Traceback (most recent call last): 
    File "test.py", line 33, in <module> 
    main() 
    File "test.py", line 18, in main 
    addCust('test1','123 mel','vancouver','bc', 10000000.00) 
    File "test.py", line 13, in addCust 
    VALUES (?,?,?,?,?) ''',(name, street, city, state, balance)) 
sqlite3.OperationalError: near ")": syntax error 

您的SQL下面列名的列表太多了),刪除它:

def addCust(name, street, city, state, balance): 
    queryCurs.execute('''INSERT INTO customers (name, street, city, state, balance) 
    VALUES (?,?,?,?,?) ''',(name, street, city, state, balance))