2016-02-21 39 views
0

使用Python 2.7.5,我已經寫了下面的代碼到編譯過的基於網絡課程的我走,顯示瞭如何sqlite3的作品與Python現在Python的sqlite3的執行錯誤

import sqlite3 as sql 

database1 = sql.connect('test1.db') 

db1_cursor = database1.cursor() 

cmd = 'CREATE TABLE IF NOT EXISTS users(username TEXT,password TEXT)' 

cmd2 = 'INSERT INTO users(username,password) VALUES("testuser,testpassword")' 

cmd3 = 'SELECT username,password FROM users' 

db1_cursor.execute(cmd) 

db1_cursor.execute(cmd2) 

db1_cursor.execute(cmd3) 

database1.commit() 

for x in db1_cursor: 

    print(x) 

,在這段代碼運行它給了我下面的操作錯誤:

Traceback (most recent call last): 

File "C:\Users\Ryan\My Code Projects\Learning\udemycourse.py", line 11, in <module> 

db1_cursor.execute(cmd2) 

OperationalError: 1 values for 2 columns 

爲什麼它給這個錯誤db1_cursor.execute(CMD2),但不是db1_cursor.execute(CMD1),我該如何解決這一問題?

回答

3

我認爲你的意思

Values ("testuser","testpassword") 
0

做插件的更好的方式是 CMD2 = 'INSERT INTO的用戶(用戶名,密碼)VALUES(?,?)'

創建佔位符

db1_cursor.execute(CMD2,( 'TESTUSER', 'testpassword'))

和傳遞值作爲元組

+0

這有效,但我決定使用上面的答案,因爲它不會改變代碼的語法以及我的udemy課程。雖然在這個過程中它會打印出'(u'testuser',u'testpassword')兩次,而不是在課程中顯示的內容只在控制檯中打印一次。爲什麼是這樣? –