SQLite中如何从Cursor中取出一个对象。

SQLite中如何从Cursor中取出一个对象。,第1张

# encoding: utf-8

import sqlite3

class LiteDBI:

''' SQLite3驱动的公共数据接口类 '''

def __init__(self, database=':memory:'):

selfconn = sqlite3connect(database)

def close(self):

selfconnclose()

def query(self, sql, args, kwg):

asdict = dict(kwg)get('asdict')

curr = selfconncursor()

currexecute(sql, args)

fields = [f[0] for f in currdescriptions]

for r in curr:

yield dict(map(None, fields, r)) if asdict else r

currclose()

假设在项目公共定义模块中定义的各种类如下

# encoding: utf-8

# 从数据库接口类中导入LiteDBI接口

from dbi import LiteDBI

class ClassRoom(object):

def __init__(self, kwg):

self__dict__ = dict(kwg)

def __str__(self):

return 'Class Room: %s'%self__dict__

class ClassRoomMgr(object):

def __init__(self, dbi):

selfdbi = dbi

selfcached = {}

selfsql = 'select from classroom where classroomid = '

def __getitem__(self, k):

if k in not selfcached:

for r in selfdbiquery(selfsql, k, asdict=True):

selfcached[r['id']] = ClassRoom(r)

return selfcached[k]

# encoding: utf-8

# 从项目公共定义模块中导入各种类

from projcommoncls import

def tester():

dbi = LiteDBI('storagedb')

classroommgr = ClassRoomMgr(dbi)

print(classroommgr[102])

dbiclose()

if __name__ == '__main__':

test()

android sqlite数据库中cursor取得的boolean类型数据,可以使用long型进行判断,0是true,1是false,boolean value = cursorgetInt(boolean_column_index)>0;

如下代码:

DatabaseHelper daHelper = new DatabaseHelper(choicthis,"seconddatabase",2);

SQLiteDatabase db = daHelpergetReadableDatabase();

Cursor cursor = dbquery("tempory",new String[]{"classnum","value"},null,null,null,null, null);

SqLiteDatabase查询并获取里面的数值的实现,案例(查询下图表格里面不同的name对应的value值)代码如下:

public int cgQueryItemValue(String name)

  {

    Loge(TAG, "hongyan:cgQueryItemValue name=" +name);

    try {

      Cursor c =mSqLiteDatabasequery(ConstENG_STRING2INT_TABLE,

          new String[] {

             ConstENG_STRING2INT_NAME,ConstENG_STRING2INT_VALUE

          },

          ConstENG_STRING2INT_NAME + "= \'" + name + "\'", null, null, null, null);

//上述的Cursor c 获取到的是指定name对应的一行(只包括指定列)也就是下图这样的:if (c !=null) {

        cmoveToFirst();//必须写,否则读不到数据,将Index移动到第一位上

        int valueIndex=cgetColumnIndexOrThrow(ConstENG_STRING2INT_VALUE);

        //如上图,valueIndex= 1;

        int value =cgetInt(valueIndex);

        //注意value值是什么类型用合适的get,如果是String就得用getString!!否则会有异常

        cclose();

        return value;

      }

    } catch (Exception e) {

      return 0;

    }

    return 0;

  }

protected int cgQueryAutoTestFailCount()

  {

    int failCount = 0;

    int result =0;

    for(String itemName:ConstCG_DEFAULT_AUTO_TEST_ITEMS_NAME)

    {

      result =mEngSqlitecgQueryItemValue(itemName);

      //Logd(TAG, "hongyan: cgQueryAutoTestFailCount item test result = " + result);

      if(result== 0)

      {

        failCount++;

      }

    }

    Logd(TAG, "hongyan: cgQueryAutoTestFailCount failCount = " + failCount);

    return failCount;

  }

android下使用cursor获取专辑,主要是在数据库里面先保存专辑的url地址,当使用cursor游标遍历数据库数据的时候,使用资源 *** 作类进行加载相应的url,如下代码:

Cursor cursor = contextgetContentResolver()query(MediaEXTERNAL_CONTENT_URI, columns, null, null, null);

Loge("cursor" , (cursor==null) + "");

while(cursormoveToNext()) {

// 查找封面

long albumId = cursorgetLong(5);

// 读取专辑

String album_uri = "content://media/external/audio/albumart"; // 专辑Uri对应的字符串

Uri albumUri = ContentUriswithAppendedId(Uriparse(album_uri), albumId);

// 取 ==> 得到一个输入流

Bitmap coverPhoto = null ;

try {

InputStream is = contextgetContentResolver()openInputStream(albumUri);

if(null != is) {

coverPhoto = BitmapFactorydecodeStream(is);

}

} catch (Exception e) {

eprintStackTrace();

}

dataadd(new Audio(cursorgetLong(0), cursorgetString(1) , cursorgetString(2) , cursorgetLong(3) , cursorgetString(4) , albumId , coverPhoto));

}

cursorclose();

本文Python *** 作 MySQL 数据库需要是使用到 PyMySQL 驱动

Python *** 作 MySQL 前提是要安装好 MySQL 数据库并能正常连接使用,安装步骤详见下文。

注意: 安装过程我们需要通过开启管理员权限来安装,否则会由于权限不足导致无法安装。

首先需要先下载 MySQL 安装包, 官网下载地址 下载对应版本即可,或直接在网上拉取并安装:

权限设置:

初始化 MySQL:

启动 MySQL:

查看 MySQL 运行状态:

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

登陆:

创建数据库:

查看数据库:

PyMySQL 模块使用 pip命令进行安装:

假如系统不支持 pip 命令,可以使用以下方式安装:

pymysql connect 函数:连接上数据库

输出结果显示如下:表面数据库连接成功

使用 pymysql 的 connect() 方法连接数据库,connect 参数解释如下:

conncursor():获取游标

如果要 *** 作数据库,光连接数据是不够的,咱们必须拿到 *** 作数据库的游标,才能进行后续的 *** 作,游标的主要作用是用来接收数据库 *** 作后的返回结果,比如读取数据、添加数据。通过获取到的数据库连接实例 conn 下的 cursor() 方法来创建游标,实例如下:

输出结果为:

cursor 返回一个游标实例对象,其中包含了很多 *** 作数据的方法,如执行sql语句,sql 执行命令: execute() 和 executemany()

execute(query,args=None):

executemany(query,args=None):

其他游标对象如下表:

完整数据库连接 *** 作实例如下:

以上结果输出为:

创建表代码如下:

如下所示数据库表创建成功:

插入数据实现代码:

插入数据结果:

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

查询数据代码如下:

输出结果:

DB API中定义了一些数据库 *** 作的错误及异常,下表列出了这些错误和异常:

本文给大家介绍 Python 如何连接 Mysql 进行数据的增删改查 *** 作,文章通过简洁的代码方式进行示例演示,给使用 Python *** 作 Mysql 的工程师提供支撑。

Cursor cursor = sqLiteDatabasequery(true, Table,new String[]{需要查找的列}, id + "= 4" , null, null, null, null, null);

以上就是关于SQLite中如何从Cursor中取出一个对象。全部的内容,包括:SQLite中如何从Cursor中取出一个对象。、Android中SQLite的Cursor如何取得boolean型数据、怎么后台查询SQLiteDatabase中的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9485133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存