簡體   English   中英

Python SQLite3無法正常工作

[英]Python SQLite3 is not working

我在Python中練習使用SQLite3。 Python的版本是2.7,而我使用的是mac os。

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

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

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

您永遠不會調用 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))

暫無
暫無

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

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