我创建一个带有主键和自动增量的表。
with open('RAND.xml', "rb") as f, sqlite3.connect("race.db") as connection:
c = connection.cursor()
c.execute(
"""CREATE TABLE IF NOT EXISTS race(RaceID INTEGER PRIMARY KEY AUTOINCREMENT,R_Number INT, R_KEY INT,\
R_NAME TEXT, R_AGE INT, R_DIST TEXT, R_CLASS, M_ID INT)""")
Run Code Online (Sandbox Code Playgroud)
然后我想插入一个元组,它的数量当然比总列数少 1,因为第一个是自动增量。
sql_data = tuple(b)
c.executemany('insert into race values(?,?,?,?,?,?,?)', b)
Run Code Online (Sandbox Code Playgroud)
我该如何停止这个错误。
sqlite3.OperationalError: table race has 8 columns but 7 values were supplied
Run Code Online (Sandbox Code Playgroud) 我一直在寻找,但仍然无法理解这是如何工作的。
我知道 SQLite 不存储日期类型值,我们必须将它们格式化为文本。我已经这样做了,但我的问题是如何按日期删除它们?
因为如果我这样做DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017',我将比较字符串而不是日期,所以我想比较不会正确。
我见过人们进行此类比较,即使是文本类型。我对我来说没有意义。
Table1是虚拟表,其中fts4和TABLE2是normal table。
查询1 (有效)
SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Run Code Online (Sandbox Code Playgroud)
查询 2(不起作用)
SELECT * FROM TABLE2 LEFT OUTER JOIN TABLE1 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Run Code Online (Sandbox Code Playgroud)
查询 2 出错
android.database.sqlite.SQLiteException:无法在请求的上下文中使用函数 MATCH(代码 1)
由此看来,FTS 表需要首先出现在 LEFT OUTER JOIN 上。为什么会发生这种情况?连接首先发生在应用 WHERE 子句之前。因此,如果它不适用于表类型不匹配,我假设它也不适用于 query1。请任何人解释一下这一点。内部发生了什么?另外,任何指向参考站点的链接都将不胜感激,以解释这一点。
使用具有以下架构的SQLite3 :
CREATE TABLE Customers(ID INTEGER PRIMARY KEY, Company TEXT NOT NULL UNIQUE, Country TEXT NOT NULL, City TEXT NOT NULL);
CREATE TABLE Orders(ID INTEGER PRIMARY KEY, CustomerID INTEGER NOT NULL, FOREIGN KEY(CustomerID) REFERENCES Customers(ID) ON DELETE RESTRICT ON UPDATE RESTRICT);
Run Code Online (Sandbox Code Playgroud)
并发出此命令:
PRAGMA foreign_key_list(Orders);
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
0|0|Customers|CustomerID|ID|RESTRICT|RESTRICT|NONE
Run Code Online (Sandbox Code Playgroud)
由于文档没有说明此编译指示的输出的含义,除了明显的(客户- 父表、客户 ID - 子键、ID - 父键、RESTRICT - ON DELETE 和第二个RESTRICT - ON UPDATE)之外,我认为NONE对应于不支持的 MATCH 子句。
我自己无法弄清楚的是前两个零的含义。有人能告诉我那是什么吗?
我最近开始将 SQLite 数据库移植到 PostGreSQL,以用于使用 SQLAlchemy 构建的 Flask 站点。我在 PGSQL 中有我的模式,甚至将数据插入到数据库中。但是,我无法运行常用的 INSERT 命令来向数据库添加信息。通常,我使用 SQL Alchemy 插入新记录,将 ID 列保留为 NULL,然后仅设置其他列。但是,这会导致以下错误:
sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null, 2017-07-24 20:40:37.787393+00, 2017-07-24 20:40:37.787393+00, episode_length_list = [52, 51, 49, 50, 83]
sum_length = 0
for ..., 0, f, 101, 1, 0, 0, , null).
[SQL: 'INSERT INTO submission (date_created, date_modified, code, status, correct, assignment_id, course_id, user_id, assignment_version, version, url) VALUES (CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, %(code)s, %(status)s, %(correct)s, %(assignment_id)s, %(course_id)s, …Run Code Online (Sandbox Code Playgroud) 我正在使用正则表达式运行一些命令行 sqlite3 查询(sqlite 2.8.17 Linux Mint 18.02)。这会产生错误:
Error: no such function: REGEXP
我已经安装了 sqlite3-pcre。如果我以交互方式运行 sqlite3,我可以在执行后成功运行我的查询.load /usr/lib/sqlite3/pcre.so
尝试在命令行上加载库会产生错误:
sqlite3 my.db ".load /usr/lib/sqlite3/pcre.so;select * from foo where description REGEXP 'Some Expression'"
Error: /usr/lib/sqlite3/pcre.so;select.so: cannot open shared object file: No such file or directory
如何在命令行查询中包含 .load?我可以将库放在 rc 文件中吗?
我可以关闭整个数据库(即所有表的所有列)的区分大小写吗?
如果我已经创建了数据库会发生什么?
我是否必须手动将所有列设置COLLATE为NOCASE?
我尝试NOCASE过几个查询,如下所示
select * from ...table COLLATE NOCASE
Run Code Online (Sandbox Code Playgroud)
但是如果我或其他新人忘记使用怎么办?NOCASE
我厌倦了在创建表时使每一列都为 NOCASE。
http://floating-point-gui.de/formats/binary/
二进制只能将这些数字表示为有限分数,其中分母是 2 的幂
这是否意味着通过此过程计算出的数字都可以相互相加或乘以 2 任意次数,并且仍然具有精确的二进制/浮点表示形式,没有舍入误差?
const dv2 = (num, limit) => {
limit--;
if (limit === 0) {
return;
} else {
console.log(num, limit);
dv2((num / 2), limit)
}
};
Run Code Online (Sandbox Code Playgroud)
是否可以确定浮点数何时是精确值还是近似值?
我有一个 1000 万行的表
我有重复的行,并且我开发了一个集中了几列的列。这个创建的列应该是唯一的。
这就是我所拥有的
列1 列2 列3 ... 列50 1 吉姆·雷德 1jimred 1 吉姆·雷德 1jimred 2 山姆蓝 1samblue 3 狐狸粉红 3foxpink
我想要的是
列1 列2 列3 ... 列50 1 吉姆·雷德 1jimred 2 山姆蓝 1samblue 3 狐狸粉红 3foxpink
我想编写一个程序来删除 col50 中找到的重复行并保留所有其他列。
不过,我认为 1000 万行中有 900 万行是唯一的,因此我无法将结果存储在内存中。
有没有办法做到这一点?
我有一个包含 3 个属性的模型:
public class SomeModel
{
[Key]
public int SomeInt { get; set; }
public string SomeString { get; set; }
public TimeSpan Time { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试将这样的模型添加到我的 SQLite 数据库中,则会引发异常。
using (var db = new MyDataContext())
{
var item = new SomeModel { SomeInt = 123, SomeString = "a string" , Time = new TimeSpan(1,2,3)};
db.SomeModels.Add(item);
try
{
db.SaveChanges();
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.ReadLine();
throw;
}
}
Run Code Online (Sandbox Code Playgroud)
例外情况:
System.NotSupportedException: "There is no store type corresponding …Run Code Online (Sandbox Code Playgroud) sqlite ×10
android ×2
c# ×1
foreign-keys ×1
fts4 ×1
java ×1
javascript ×1
postgresql ×1
pragma ×1
precision ×1
python ×1
python-3.x ×1
sql ×1
sqlalchemy ×1