sqlite python游标函数错误

sqlite python游标函数错误,python,sqlite,Python,Sqlite,我运行了此代码,但出现以下错误: import sqlite3 as sql import os db_folder = "D:/Python/databases/accounts.sqlite" db = sql.connect(db_folder) im = sql.Cursor() im.execute("""CREATE TABLE IF NOT EXISTS 'accounts' ( id TEXT DEFAULT 'acc

我运行了此代码,但出现以下错误:

import sqlite3 as sql
import os 

db_folder = "D:/Python/databases/accounts.sqlite"
db = sql.connect(db_folder)
im = sql.Cursor()

im.execute("""CREATE TABLE IF NOT EXISTS 'accounts' (              
          id    TEXT  DEFAULT 'account' UNIQUE             
          pw    TEXT  DEFAULT 'password
          email TEXT UNIQUE 
)
""")

datas = [
  ("eren.arc1","1236"),
  ("ern.arc"),
  (none,none,"erenarici@gmail.com")
]

if not os.path.exists(db_folder):
    for data in datas : 
        im.execute("""INSERT INTO 'accounts' VALUES (?,?,?)""",datas)
    db.commit()    
文件“databases/db4.py”,第6行,在
im=sql.Cursor()
TypeError:函数只接受1个参数(给定0)
有什么问题?我在游标函数中不经常看到参数。 注意:我使用了
cursor()
,但我认为sqlite3没有cursor属性错误。然后我将其更改为
Cursor()

执行:

File "databases/db4.py", line 6, in <module>
im = sql.Cursor()
TypeError: function takes exactly 1 argument (0 given)
输出:

import sqlite3 as sql
import os 

sqlite_file = "db.sqlite"
conn = sql.connect(sqlite_file)
c = conn.cursor()

c.execute("""CREATE TABLE IF NOT EXISTS accounts (
          id TEXT DEFAULT 'account' UNIQUE,
          pw TEXT DEFAULT 'password',
          email TEXT UNIQUE);""")

items = [
  ("id1", "pw1", "user1@gmail.com"),
  ("id2", "pw2", "user2@gmail.com"),
  ("id3", "pw3", "user3@gmail.com")
]

for item in items: 
    c.execute("""INSERT INTO accounts VALUES (?,?,?);""", item)

c.execute("""INSERT INTO accounts(id, email) VALUES ('id4', 'user4@gmail.com');""")
c.execute("""INSERT INTO accounts(email) VALUES ('account@gmail.com');""")

for row in c.execute('SELECT * FROM accounts'):
    print(row)

conn.commit()
conn.close()
如果尊重每个字段的顺序,则可以检查
项的长度
元组以在循环中进行插入:

('id1', 'pw1', 'user1@gmail.com')
('id2', 'pw2', 'user2@gmail.com')
('id3', 'pw3', 'user3@gmail.com')
('id4', 'password', 'user4@gmail.com')
('account', 'password', 'account@gmail.com')

但是
(none,none,'email')
在这里没有意义,要插入空数据,请使用关键字
NULL
(如果python是
none
也不是
none

您必须将db连接传递到光标中。光标不知道连接到哪里。试试'sql.Cursor(db)'我可能错了,我没有测试这个
Cursor()
,没有大写C?我不知道。测试itI我查看了文档,它较低case@Joe我不知道确切的原因,但它运行感谢
for item in items: 
    if len(item) == 3:
        c.execute("""INSERT INTO accounts VALUES (?,?,?);""", item)
    elif len(item) == 2:
        c.execute("""INSERT INTO accounts(pw, email) VALUES (?,?);""", item)
    elif len(item) == 1:
        c.execute("""INSERT INTO accounts(email) VALUES (?);""", item)