标签: sqlite

是什么原因导致在SQLite中创建日志文件?

我开始注意到我的iPhone应用程序的SQLite查询有一种奇怪的行为.每当我执行"INSERT"语句时,都会在我的db文件旁边创建一个日志文件(确切的文件名是"userdata.db-journal").

如果我正确理解了文档,那么SQLite将使用此日志文件在操作失败时能够回滚.但是操作完成后文件仍保留在那里.

我做了准备,绑定和执行查询的经典步骤(为简单起见,不检查返回值):

sqlite3 *db = NULL;
sqlite3_open( "userdata.db", &db );

sqlite3_stmt *insertStmt = NULL;
const char *query = "INSERT INTO table VALUES(?,?)";
sqlite3_prepare_v2( db, query, -1, &insertStmt, NULL );

sqlite3_bind_int( insertStmt, 1, 0 );
sqlite3_bind_int( insertStmt, 2, 0 );

sqlite3_step( insertStmt );

sqlite3_reset( insertStmt );
sqlite3_clear_bindings( insertStmt );

sqlite3_close( db );
Run Code Online (Sandbox Code Playgroud)

日志文件是在调用'sqlite3_step'函数后创建的,并保持不变直到关闭数据库.我需要做些什么才能让它消失?

sqlite iphone

26
推荐指数
1
解决办法
2万
查看次数

清洁方式按指定的顺序按ID查找ActiveRecord对象

我想获得一个给定一组id的ActiveRecord对象数组.

我认为

Object.find([5,2,3])
Run Code Online (Sandbox Code Playgroud)

将返回一个数组,其中包含对象5,对象2,然后按顺序返回对象3,但我得到的数组按对象2,对象3和对象5排序.

ActiveRecord Base 查找方法API提到您不应该按照提供的顺序期望它(其他文档不提供此警告).

一个可能的解决方案是按相同顺序的ID数组查找的?,但订单选项似乎对SQLite无效.

我可以编写一些ruby代码来自己对对象进行排序(有点简单,缩放比例较差或缩放比较复杂),但是有更好的方法吗?

sqlite activerecord ruby-on-rails find rails-activerecord

26
推荐指数
4
解决办法
2万
查看次数

如何使用搜索和替换查询更新SQLite数据库?

我的SQL知识非常有限,特别是关于SQLite,虽然我相信这将是某种通用查询...或者可能不是因为搜索和替换...

我在SQLite中有这个音乐数据库,当然有各种各样的领域,但重要的是"media_item_id"和"content_url".

这是"content_url"的示例:

file:///c:/users/nazgulled/music/band%20albums/devildriver/%5b2003%5d%20devildriver/08%20-%20what%20does%20it%20take%20(to%20be%20a%20man).mp3
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个搜索类似条目的查询,其中"content_url"遵循该模式,并用其他东西替换它("content_url").

例如,通用的"content_url"可以是这样的:

file:///c:/users/nazgulled/music/band%20albums/BAND_NAME/ALBUM_NAME/SONG_NAME.mp3
Run Code Online (Sandbox Code Playgroud)

我想用以下内容替换所有这些条目:

file:///c:/users/nazgulled/music/bands/studio%20albums/BAND_NAME/ALBUM_NAME/SONG_NAME.mp3
Run Code Online (Sandbox Code Playgroud)

我怎么能在一个查询中做到这一点?

PS:我正在使用Firefox SQLite Manager(找不到更好的免费替代Windows).

sql sqlite replace sql-update

26
推荐指数
1
解决办法
4万
查看次数

Django:将项目从sqlite迁移到PostgreSQL的最佳实践是什么?

我需要将一个复杂的项目从sqlite迁移到PostgreSQL.很多人似乎都有外键,数据截断等问题......

  • 有完全自动化的实用程序吗?
  • 我需要在迁移之前检查一些数据或模式吗?

编辑:我尝试了django-command-extensions DumpScript,但它不能在我的2GB RAM PC上使用我当前的DataSet运行.

sqlite django postgresql data-migration

26
推荐指数
4
解决办法
2万
查看次数

如何查看在iphone应用程序中运行的sqlite文件中的数据?

如何在iphone中运行的应用程序中查看sqlite文件中存在的数据,就像我们使用mysql工作台查看数据库的内容一样

sqlite iphone

26
推荐指数
3
解决办法
5万
查看次数

确保SQLite3中唯一行的有效方法

我在我的一个项目中使用SQLite3,我需要确保插入到表中的行对于它们的一些列的组合是唯一的.在大多数情况下,插入的行在这方面会有所不同,但如果匹配,新行必须更新/替换现有行.

显而易见的解决方案是使用复合主键,并使用conflict子句来处理冲突.在此之前:

CREATE TABLE Event (Id INTEGER, Fld0 TEXT, Fld1 INTEGER, Fld2 TEXT, Fld3 TEXT, Fld4 TEXT, Fld5 TEXT, Fld6 TEXT);
Run Code Online (Sandbox Code Playgroud)

成了这个:

CREATE TABLE Event (Id INTEGER, Fld0 TEXT, Fld1 INTEGER, Fld2 TEXT, Fld3 TEXT, Fld4 TEXT, Fld5 TEXT, Fld6 TEXT, PRIMARY KEY (Fld0, Fld2, Fld3) ON CONFLICT REPLACE);
Run Code Online (Sandbox Code Playgroud)

这确实强制执行我需要它的唯一性约束.不幸的是,这种变化也会导致性能损失超出我的预期.我使用sqlite3命令行实用程序进行了一些测试,以确保我的其余代码中没有错误.测试涉及在单个事务中或在每个1,000行的100个事务中输入100,000行.我得到了以下结果:

                                | 1 * 100,000   | 10 * 10,000   | 100 * 1,000   |
                                |---------------|---------------|---------------|
                                | Time  | CPU   | Time  | CPU   | Time  | CPU …
Run Code Online (Sandbox Code Playgroud)

sql sqlite performance insert

26
推荐指数
2
解决办法
1万
查看次数

自定义ListView,日期为SectionHeader(使用自定义SimpleCursorAdapter)

我想显示ListView与Date作为SectionHeader.

我有: 我使用自定义SimpleCursorAdapter从sqlite数据库显示ListView.

我的自定义SimpleCursorAdapter是:

public class DomainAdapter extends SimpleCursorAdapter{
private Cursor dataCursor;

private LayoutInflater mInflater;

public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from,
        int[] to) {
    super(context, layout, dataCursor, from, to);
        this.dataCursor = dataCursor;
        mInflater = LayoutInflater.from(context);
}


public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.todo_row, null);

        holder = new ViewHolder();
        holder.text1 = (TextView) convertView.findViewById(R.id.label);//Task Title
        holder.text2 = (TextView) convertView.findViewById(R.id.label2);//Task Date
        holder.img =   (ImageView) convertView.findViewById(R.id.task_icon);

        convertView.setTag(holder);
    } else …
Run Code Online (Sandbox Code Playgroud)

sqlite android listview android-custom-view

26
推荐指数
1
解决办法
2万
查看次数

在单个SQL查询中更新具有不同值的多个行

我有表SQLite数据库myTable和列id,posX,posY.行数不断变化(可能会增加或减少).如果我知道的值id的每一行,并且行数,我可以执行一个SQL查询来更新所有的posX,并posY根据ID不同值的字段?

例如:

---------------------
myTable:

id   posX    posY

1      35     565
3      89     224
6      11     456
14     87     475
---------------------
Run Code Online (Sandbox Code Playgroud)

SQL查询伪代码:

UPDATE myTable SET posX[id] = @arrayX[id], posY[id] = @arrayY[id] "
Run Code Online (Sandbox Code Playgroud)

@arrayX并且@arrayY是存储posXposY字段的新值的数组.

如果,例如,arrayXarrayY包含以下值:

arrayX = { 20, 30, 40, 50 }
arrayY = { 100, 200, 300, 400 }
Run Code Online (Sandbox Code Playgroud)

...然后查询后的数据库应如下所示:

---------------------
myTable:

id   posX    posY …
Run Code Online (Sandbox Code Playgroud)

sql sqlite rows

26
推荐指数
3
解决办法
8万
查看次数

如何使用Index将Pandas数据帧写入sqlite

我有一个从大熊猫DataFrame中提取的股票市场数据列表(见下面的格式).该日期用作DataFrame中的索引.我想将数据(包括索引)写入SQLite数据库.

             AAPL     GE
Date
2009-01-02  89.95  14.76
2009-01-05  93.75  14.38
2009-01-06  92.20  14.58
2009-01-07  90.21  13.93
2009-01-08  91.88  13.95
Run Code Online (Sandbox Code Playgroud)

基于我对Pandas的write_frame代码的阅读,它目前不支持编写索引.我尝试使用to_records,但遇到了Numpy 1.6.2和datetimes问题.现在我正在尝试使用.itertuples编写元组,但SQLite抛出了一个错误,表明数据类型不受支持(参见下面的代码和结果).我对Python,Pandas和Numpy比较陌生,所以我完全有可能错过一些明显的东西.我想我在尝试为SQLite写一个日期时遇到了问题,但我想我可能会过于复杂.

我想我可以通过升级到Numpy 1.7或Pandas的开发版来修复这个问题,Pandas在GitHub上发布了一个修复程序.我更愿意使用软件的发布版本开发 - 我是新手,我不希望稳定性问题进一步混淆.

有没有办法使用Python 2.7.2,Pandas 0.10.0和Numpy 1.6.2来实现这一目标?也许以某种方式清理日期时间?我有点过头了,任何帮助都会受到赞赏.

码:

import numpy as np
import pandas as pd
from pandas import DataFrame, Series
import sqlite3 as db

# download data from yahoo
all_data = {}

for ticker in ['AAPL', 'GE']:
    all_data[ticker] = pd.io.data.get_data_yahoo(ticker, '1/1/2009','12/31/2012')

# create a data frame
price = DataFrame({tic: …
Run Code Online (Sandbox Code Playgroud)

python sqlite pandas

26
推荐指数
4
解决办法
4万
查看次数

如何真空sqlite数据库?

我想知道如何真空sqlite数据库.我从命令提示符处为整个数据库尝试了语法MANUAL VACUUM命令:

 $sqlite3 database_name "VACUUM;";
Run Code Online (Sandbox Code Playgroud)

但它给出的错误是:

near "database_name": syntax error.
Run Code Online (Sandbox Code Playgroud)

还有AUTO VACUUM:

PRAGMA auto_vacuum = INCREMENTAL;
Run Code Online (Sandbox Code Playgroud)

并尝试将其用于特定的表格:

VACUUM table_name;
Run Code Online (Sandbox Code Playgroud)

但没有结果.

sqlite vacuum

26
推荐指数
3
解决办法
3万
查看次数