标签: sqlite

Python - Sqlite插入没有自动增量主键值的元组

我创建一个带有主键和自动增量的表。

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)

python sqlite

1
推荐指数
1
解决办法
2371
查看次数

SQLite 按日期删除行

我一直在寻找,但仍然无法理解这是如何工作的。

我知道 SQLite 不存储日期类型值,我们必须将它们格式化为文本。我已经这样做了,但我的问题是如何按日期删除它们?

因为如果我这样做DELETE * FROM TABLE WHERE COLUMN_DATE >= '09-05-2017',我将比较字符串而不是日期,所以我想比较不会正确。

我见过人们进行此类比较,即使是文本类型。我对我来说没有意义。

java sql sqlite android android-database

1
推荐指数
1
解决办法
3649
查看次数

FTS4 上的 SQLite Android Join 操作

Table1是虚拟表,其中fts4TABLE2normal 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。请任何人解释一下这一点。内部发生了什么?另外,任何指向参考站点的链接都将不胜感激,以解释这一点。

sqlite android fts4 android-sqlite

1
推荐指数
1
解决办法
1152
查看次数

SQLite 的foreign_key_list pragma 的输出

使用具有以下架构的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 foreign-keys pragma

1
推荐指数
1
解决办法
2083
查看次数

从 SQlite 切换后,无法在 Flask Sqlalchemy 的 Postgresql 中插入 NULL 作为主键值

我最近开始将 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)

sqlite postgresql sqlalchemy flask-sqlalchemy

1
推荐指数
1
解决办法
6352
查看次数

从命令行加载 PCRE.so

我正在使用正则表达式运行一些命令行 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 文件中吗?

sqlite

1
推荐指数
1
解决办法
1026
查看次数

SQLite - 关闭整个数据库的区分大小写

我可以关闭整个数据库(即所有表的所有列)的区分大小写吗?

如果我已经创建了数据库会发生什么?

我是否必须手动将所有列设置COLLATENOCASE

我尝试NOCASE过几个查询,如下所示

select * from ...table  COLLATE NOCASE
Run Code Online (Sandbox Code Playgroud)

但是如果我或其他新人忘记使用怎么办?NOCASE 我厌倦了在创建表时使每一列都为 NOCASE。

sqlite

1
推荐指数
1
解决办法
3019
查看次数

浮点:我可以递归地将数字除以/乘以 2 并且永远不会出现舍入错误吗?

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)

是否可以确定浮点数何时是精确值还是近似值?

javascript sqlite floating-point precision

1
推荐指数
1
解决办法
255
查看次数

删除大型 Sqlite 表中的重复行

我有一个 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 万行是唯一的,因此我无法将结果存储在内存中。

有没有办法做到这一点?

sqlite python-3.x

1
推荐指数
1
解决办法
3756
查看次数

如何使用 EF6 处理 TimeSpan 将其保存在 SQLite 中

我有一个包含 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)

c# sqlite entity-framework

1
推荐指数
1
解决办法
937
查看次数