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)