Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLite3,表未显示更新_Python_Sqlite - Fatal编程技术网

Python SQLite3,表未显示更新

Python SQLite3,表未显示更新,python,sqlite,Python,Sqlite,我正在尝试用Python中的SQLite3创建一个数据库 创建表似乎可行,但每当我尝试插入数据时,它似乎不会向数据库添加任何内容,因为fetchall()不会返回任何内容,但是,如果我再次尝试创建ID,它会抱怨 唯一约束失败 初始化: 导入sqlite3 conn=sqlite3.connect('login.db') c=连接光标() 表格创建: c.execute(““”创建表登录(ID整数主键, 第一个文本不为空, 最后一个文本不为空, 中间文本不为空, 性别文本(非空);“”) 康涅狄

我正在尝试用Python中的SQLite3创建一个数据库

创建表似乎可行,但每当我尝试插入数据时,它似乎不会向数据库添加任何内容,因为fetchall()不会返回任何内容,但是,如果我再次尝试创建ID,它会抱怨 唯一约束失败

初始化:

导入sqlite3 conn=sqlite3.connect('login.db') c=连接光标() 表格创建:

c.execute(““”创建表登录(ID整数主键,
第一个文本不为空,
最后一个文本不为空,
中间文本不为空,
性别文本(非空);“”)
康涅狄格州提交
数据插入:

c.execute(““”插入登录值(6,'First','Last','Hello','Male');”)
康涅狄格州提交
获取表格:

print(c.fetchall())
c、 关闭()
康涅狄格州关闭
将表放入联机读取器时,它也会显示为空

编辑: 这是db阅读器和google表单中显示的内容, 空白的大列表/“;”然后这个

c.fetchall()
将返回
SELECT
查询中的所有行,而您没有这样做

import sqlite3
conn = sqlite3.connect('login.db')
c = conn.cursor()
c.execute("""CREATE TABLE Login (ID INTEGER PRIMARY KEY, First TEXT NOT NULL, Last TEXT NOT NULL, Middle TEXT NOT NULL, Gender TEXT NOT NULL);""")
conn.commit()
c.execute("""INSERT INTO Login VALUES (6, 'First', 'Last', 'Hello', 'Male');""")
conn.commit()
c.execute("SELECT * FROM login")
print(c.fetchall())
我很乐意打印

[(6, 'First', 'Last', 'Hello', 'Male')]
另外,您的代码容易受到SQL注入攻击,您应该这样做

import sqlite3

conn = sqlite3.connect("login.db")
c = conn.cursor()
c.execute(
    """CREATE TABLE Login (ID INTEGER PRIMARY KEY, First TEXT NOT NULL, Last TEXT NOT NULL, Middle TEXT NOT NULL, Gender TEXT NOT NULL);"""
)
conn.commit()
c.execute(
    "INSERT INTO Login (ID, First, Last, Middle, Gender) VALUES (?,?,?,?,?)",
    (6, "First", "Last", "Hello", "Male"),
)
conn.commit()
c.execute("SELECT * FROM login")
print(c.fetchall())

尝试在您的INSERT语句中指定列。我做了,但没有做任何事感谢您的帮助。几个小时后我知道了,但我查看了SQL注入漏洞部分,它看起来确实是一个大问题!这不是生产代码,但我不知道此漏洞,感谢您指出。即使如此,您在第一次尝试插入带有引号字符的内容时也会遇到此问题:)