我在python 2.5中使用sqlite3.我创建了一个如下所示的表:
create table votes (
bill text,
senator_id text,
vote text)
Run Code Online (Sandbox Code Playgroud)
我用这样的东西访问它:
v_cur.execute("select * from votes")
row = v_cur.fetchone()
bill = row[0]
senator_id = row[1]
vote = row[2]
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是让fetchone(或其他一些方法)返回一个字典,而不是一个列表,这样我就可以通过名称而不是位置来引用字段.例如:
bill = row['bill']
senator_id = row['senator_id']
vote = row['vote']
Run Code Online (Sandbox Code Playgroud)
我知道你可以用MySQL做到这一点,但是有谁知道如何用SQLite做到这一点?
谢谢!!!
我听说过SQLite准备好的语句可以提高性能.我写了一些代码来测试它,并没有看到使用它们的性能有任何差异.所以,我想也许我的代码不正确.如果您发现我这样做有任何错误,请告诉我......
[self testPrep:NO dbConn:dbConn];
[self testPrep:YES dbConn:dbConn];
reuse=0
recs=2000
2009-11-09 10:39:18 -0800
processing...
2009-11-09 10:39:32 -0800
reuse=1
recs=2000
2009-11-09 10:39:32 -0800
processing...
2009-11-09 10:39:46 -0800
-(void)testPrep:(BOOL)reuse dbConn:(sqlite3*)dbConn{
int recs = 2000;
NSString *sql;
sqlite3_stmt *stmt;
sql = @"DROP TABLE test";
sqlite3_exec(dbConn, [sql UTF8String],NULL,NULL,NULL);
sql = @"CREATE TABLE test (id INT,field1 INT, field2 INT,field3 INT,field4 INT,field5 INT,field6 INT,field7 INT,field8 INT,field9 INT,field10 INT)";
sqlite3_exec(dbConn, [sql UTF8String],NULL,NULL,NULL);
for(int i=0;i<recs;i++){
sql = @"INSERT INTO test (id,field1,field2,field3,field4,field5,field6,field7,field8,field9,field10) VALUES (%d,1,2,3,4,5,6,7,8,9,10)";
sqlite3_exec(dbConn, [sql UTF8String],NULL,NULL,NULL);
} …Run Code Online (Sandbox Code Playgroud) 我希望实现一种"活动日志"表,其中用户执行的操作存储在sqlite表中,然后呈现给用户,以便他们可以看到他们已完成的最新活动.但是,当然,我觉得没有必要保留每一段历史记录,所以我想知道是否有办法配置表,一旦达到最大设置限制就开始修剪旧行.
例如,如果限制为100,并且表中当前有多少行,则插入另一个操作时,将自动删除最旧的行,以便始终最多包含100行.有没有办法配置sqlite表来执行此操作?或者我必须经营一个cron工作?
澄清编辑:在任何给定时刻,我想显示表格的最后100个(例如)动作/事件(行).
如何在python中将基于磁盘的sqlite表复制到内存数据库?我知道表格的架构.
我在这个问题上有点困惑,如果使用ContentProvider或者更好Database.或者,如果我不想与其他应用程序共享任何数据,则没有任何区别.
如果我理解正确,内容提供商基于数据库,SQLite并且它们的内容也可能只能访问我的应用程序.
你能解释一下吗?
非常感谢你,
穆尔
简短问题:是否有任何nosql平面文件数据库可用作sqlite?
说明:可以在不同的进程中打开平面文件数据库进行读取,并保持一个进程写入.如果不需要严格的一致性,我认为它非常适合读缓存.说1-2秒写入文件甚至内存块,读者在此之后获得更新数据.
所以我几乎选择使用sqlite,因为我的python服务器读取缓存.但仍有一个问题.我不喜欢在另一个地方再次重写sqls并在sqlite中构建我的数据表的另一个副本,就像我在PostgreSql中用作后端数据库一样.
还有其他选择吗?谢谢!
我是SQLite3和PHP的新手,想知道是否以及如何使用PHP连接到SQLite3数据库.
我如何从数据库中获取数据,是否可以在浏览器屏幕上输出它们?我一直在网上搜索一段时间,但找不到任何东西.
谢谢.
更新:bio可能包含撇号(参见更新示例)
我有一个SQL查询,其值跨越多行,并导致查询失败:
UPDATE User SET UserId=12345, Name="J Doe", Location="USA", Bio="I'm a
bio that has an apostrophe, and I'm
spanning multiple lines!"
WHERE UserId=12345
Run Code Online (Sandbox Code Playgroud)
在C#中,您可以@在字符串之前放置一个Bio=@"..." 以允许它跨越多行,但我不确定如何使用SQL查询实现相同的功能.你如何得到一个跨越多行的字符串,而不必像手动连接字符串那样:
Bio="I'm a"
+" bio that has an apostrophe, and I'm"
+" spanning multiple lines!"
Run Code Online (Sandbox Code Playgroud) 我有点诙谐的问题.比如说,我在一个存在主键的表中插入了一些包含一些数据的行.如何"选择"刚刚插入的行的主键?
我应该更具体,并提到我目前正在使用SQLite.
我在我的Ruby应用程序中使用SQLite + ActiveRecord,这是我在尝试向整数字段写入一个大数字时得到的错误:
1428584647765超出ActiveRecord :: Type :: Integer的范围,限制为4
但根据SQLite文档:
该值是有符号整数,存储为1,2,3,4,6或8个字节,具体取决于值的大小.
8个字节是存储整数1428584647765的足够空间,那么为什么ActiveRecord会给我一个错误?为什么它认为这是一个4字节的字段?