标签: sqlite

如何使用Python检查SQLite中是否存在行?

我有一个带有查询语句的游标,如下所示:

cursor.execute("select rowid from components where name = ?", (name,))
Run Code Online (Sandbox Code Playgroud)

我想检查组件的存在:name并返回python变量.我怎么做?

python sql sqlite

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

Android中的SQLiteDatabase.CursorFactory有什么用?

我通过扩展SQLiteOpenHelper类创建了一个数据库.它也创造了.这是我正在粘贴的代码

public Imagehelper(Context context) {
    super(context, DATABASE_NAME, null, SCHEMA_VERSION);

    cntxt = context;
    filename = Environment.getExternalStorageDirectory();

    DATABASE_FILE_PATH_EXTERNAL = filename.getAbsolutePath()+File.separator+DATABASE_NAME;
    Log.i("Log", ":"+DATABASE_FILE_PATH_EXTERNAL);
}
Run Code Online (Sandbox Code Playgroud)

这里一切都很好.但是如果你专注于超级超级参数传递(context,DATABASE_NAME,null,SCHEMA_VERSION); .我无法理解null参数.我知道我们必须传递SQLiteDatabase.CursorFactory对象.

但是怎么样?那有什么用?

sqlite android

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

区分大小写并且像SQLite一样不敏感

在SQLite中,可以使用以下命令更改"LIKE"的区分大小写的行为:

PRAGMA case_sensitive_like=ON;
PRAGMA case_sensitive_like=OFF;
Run Code Online (Sandbox Code Playgroud)

但是在我的情况下,我想执行一个查询,其中一部分是区分大小写的,而其中一部分不是.例如:

SELECT * FROM mytable
WHERE caseSensitiveField like 'test%'
AND caseInsensitiveField like 'g2%'
Run Code Online (Sandbox Code Playgroud)

这可能吗?

sqlite case-sensitive

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

使用Flask SQLAlchemy从SQLite切换到MySQL

我有一个我用Flask SQLAlchemy和SQLite构建的网站,需要切换到MySQL.我已经迁移了数据库并让它在MySQL下运行,但是

  1. 无法弄清楚如何连接到MySQL数据库(即SQLALCHEMY_DATABASE_URI应该是什么)和
  2. 我不清楚我现有的任何SQLAlchemy SQLite代码是否适用于MySQL.

我怀疑(1)是相当简单的,只是显示如何映射,例如,我在我的MySQL数据库工具中使用的连接对话框的内容到适当格式化的URL.但我担心(2),我曾假设SQLAlchemy提供了一个抽象层,以便简单的SQLAlchemy代码如

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)


class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

admin = User('admin', 'admin@example.com')

db.session.add(admin)

User.query.all()

User.query.filter_by(username='admin').first()
Run Code Online (Sandbox Code Playgroud)

除了对数据库URI的适当更改之外,没有任何修改的工作; 但我发现使用SQLAlchemy和MySQL 的例子似乎使用了完全不同的API.

我是否可以(2)通过简单地更改数据库URI来迁移我的Flask SQLAlchemy代码以使用MySQL数据库,如果是这样(1)该URI应该是什么?

python mysql database sqlite flask-sqlalchemy

38
推荐指数
2
解决办法
5万
查看次数

将SQLite3转储重新导入数据库

我觉得这是一个愚蠢的问题,因为它似乎是常识...但没有谷歌搜索我可以放在一起似乎能够给我答案!

我知道如何使用.dump命令从sqlite3数据库中获取数据.但现在我有这个名为export.sqlite3.sql的ASCII文件...我似乎无法将它恢复到我想要的数据库中.

我的目标是将我在一个rails应用程序中的数据传输到另一个应用程序,这样我就不必花费各种时间再次创建虚拟数据...所以我从我的第一个应用程序转储数据,摆脱所有CREATE TABLE语句,并确保我的第二个应用程序上的架构匹配...现在我只需要在那里得到它.

有人会介意帮我吗?当你找到一种方法时,你会告诉我你插入谷歌的是什么,因为我现在正用勺子打开我的脑袋而不是我认为容易找到的东西.

sql database sqlite import

37
推荐指数
2
解决办法
5万
查看次数

使用SQLiteDatabase.execSQL执行多个语句

我遵循了使用Android构建数据库的标准教程.我创建了一个名为DbHelper的类,它扩展了SQLiteOpenHelper.我已重写创建处理程序以执行字符串.

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(DbDefinitions.DB_CREATE);
}
Run Code Online (Sandbox Code Playgroud)

DbDefinitions.DB_CREATE是我创建的静态String.

public static final String TABLE_MESSAGES = "messages";
public static final String TABLE_FRIENDS = "friends";

public static final String STATE_OK = "STATE_OK";

public static final String DB_CREATE = 
    "create table " + TABLE_MESSAGES + " (_id integer primary key, user_id integer not null, created_on integer, subject text not null, summary text not null, messagetext text null, read integer not null, status text not null default '" + STATE_OK + "'); " …
Run Code Online (Sandbox Code Playgroud)

database sqlite android

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

为什么使用SQLiteOpenHelper而不是SQLiteDatabase?

在我的活动中,我有例如

SQLiteDatabase db = openOrCreateDatabase(Preferences.DB_NAME, Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, value VARCHAR)");
Cursor dbResult = db.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
db.close();
Run Code Online (Sandbox Code Playgroud)

什么是使用的好处SQLiteOpenHelper

DatabaseHelper helper = new DatabaseHelper(this);
SQLiteDatabase db = helper.getWriteableDatabase();
SQLiteDatabase db_2 = helper.getReadableDatabase();
Cursor dbResult = db_2.rawQuery("SELECT value FROM data", null);
// do sometning with cursors
dbResult.close();
helper.close();
Run Code Online (Sandbox Code Playgroud)

类本身

public class DatabaseHelper extends SQLiteOpenHelper {
    public DatabaseHelper(Context context) {
        super(context, Preferences.DB_NAME, null, Preferences.DB_VERSION); …
Run Code Online (Sandbox Code Playgroud)

sqlite android

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

sqlite得到ROWID

考虑这个简单的表(tbl1):

A|first letter
B|second letter
C|third letter
Run Code Online (Sandbox Code Playgroud)

第一列是字母,第二列是desc

我可以毫无问题地执行此查询:

select * from tbl1 where letter='B'      -->>second letter
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何获取(检索)结果行的ROWID

sqlite

37
推荐指数
1
解决办法
5万
查看次数

在SQLite数据库浏览器中创建外键

对不起新手问题.

我使用SQLite数据库浏览器创建了我的表,但是:

  1. 我不知道如何使用该应用程序指定我的外键

  2. 如何在表之间创建关系图?

sqlite android-sqlite

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

在sqlite中查找重复的列值

我在表格中插入了一些值DataTab.

SomeId: Integer     => Autogenerated primary key.
DataId: Guid
DataNumber: Integer
DataType: varchar
Run Code Online (Sandbox Code Playgroud)

以上是我的表中的列,如果表包含重复DataId值,我想查找.我一直在使用数据库已经很久了.现在我可以找出简单的查询.但我发现这有些困难.

我尝试了以下查询,这是正确的吗?

SELECT * from (Select * from DataTab) AS X 
where DataId= X.DataId AND SomeId!=X.SomeId
Run Code Online (Sandbox Code Playgroud)

database sqlite

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