2016-02-21 37 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')两次,而不是在课程中显示的内容只在控制台中打印一次。为什么是这样? –