我有一个带有查询语句的游标,如下所示:
cursor.execute("select rowid from components where name = ?", (name,))
Run Code Online (Sandbox Code Playgroud)
我想检查组件的存在:name并返回python变量.我怎么做?
我通过扩展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中,可以使用以下命令更改"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)
这可能吗?
我有一个我用Flask SQLAlchemy和SQLite构建的网站,需要切换到MySQL.我已经迁移了数据库并让它在MySQL下运行,但是
SQLALCHEMY_DATABASE_URI应该是什么)和我怀疑(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应该是什么?
我觉得这是一个愚蠢的问题,因为它似乎是常识...但没有谷歌搜索我可以放在一起似乎能够给我答案!
我知道如何使用.dump命令从sqlite3数据库中获取数据.但现在我有这个名为export.sqlite3.sql的ASCII文件...我似乎无法将它恢复到我想要的数据库中.
我的目标是将我在一个rails应用程序中的数据传输到另一个应用程序,这样我就不必花费各种时间再次创建虚拟数据...所以我从我的第一个应用程序转储数据,摆脱所有CREATE TABLE语句,并确保我的第二个应用程序上的架构匹配...现在我只需要在那里得到它.
有人会介意帮我吗?当你找到一种方法时,你会告诉我你插入谷歌的是什么,因为我现在正用勺子打开我的脑袋而不是我认为容易找到的东西.
我遵循了使用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) 在我的活动中,我有例如
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) 考虑这个简单的表(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数据库浏览器创建了我的表,但是:
我不知道如何使用该应用程序指定我的外键?
如何在表之间创建关系图?
我在表格中插入了一些值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)