标签: sqlite

sqlite3的:: BusyException

现在使用SQLite3运行rails站点.

大概每500个请求左右,我得到一个

ActiveRecord :: StatementInvalid(SQLite3 :: BusyException:数据库被锁定:...

解决这个问题的方法是什么,这对我的代码来说是微创的?

我目前正在使用SQLLite,因为您可以将数据库存储在源代码控制中,这使得备份变得自然,您可以非常快速地推出更改.但是,它显然没有真正设置为并发访问.我明天早上会迁移到MySQL.

ruby database sqlite ruby-on-rails

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

SQLite支持哪些加入?

根据join-op语法,SQLite有13个不同的连接语句:

,
JOIN
LEFT JOIN
OUTER JOIN
LEFT OUTER JOIN
INNER JOIN
CROSS JOIN
NATURAL JOIN
NATURAL LEFT JOIN
NATURAL OUTER JOIN
NATURAL LEFT OUTER JOIN
NATURAL INNER JOIN
NATURAL CROSS JOIN
Run Code Online (Sandbox Code Playgroud)

它们都是独特的吗?哪个是等价的?

sqlite join

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

在空表中查找SQLite列名称

对于踢,我正在编写一个"模式文档"工具,用于生成数据库中表和关系的描述.我目前正在填补它与SQLite合作.

我已经设法通过sqlite_master表上的查询提取SQLite数据库中所有表的名称.对于每个表名,我然后触发一个简单的名称

select * from <table name>
Run Code Online (Sandbox Code Playgroud)

查询,然后使用sqlite3_column_count()sqlite3_column_name()API收集列名称,我进一步提供sqlite3_table_column_metadata()以获取其他信息.很简单吧?

问题是它只适用于非空的表.也就是说,sqlite_column_*()API仅sqlite_step()在返回时才有效SQLITE_ROW,而空表不是这种情况.

所以问题是,我如何发现空表的列名?或者,更一般地说,是否有更好的方法在SQLite中获取此类模式信息?

我觉得必须有另一个隐藏的sqlite_xxx表隐藏在包含这些信息的地方,但到目前为止还没有找到它.

database sqlite schema

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

sqlite中的变量表名

问题:是否可以使用变量作为表名而不必使用字符串构造函数来执行此操作?


信息:

我正在开展一个项目,目的是对我的星模拟数据进行编目.为此,我将所有数据加载到sqlite数据库中.它工作得很好,但我决定为我的数据库增加更多的灵活性,效率和可用性.我计划稍后在模拟中添加小行星,并希望每个星都有一个表格.这样我就不必在每个太阳系中查询一个20m的某些小行星的表格.

我被告知使用字符串构造函数很糟糕,因为它让我容易受到SQL注入攻击.虽然这不是什么大问题,因为我是唯一可以访问这些dbs的人,但我想遵循最佳实践.而且这种方式如果我做一个类似的情况,它向公众开放,我知道该怎么做.

目前我这样做:

cursor.execute("CREATE TABLE StarFrame"+self.name+" (etc etc)")
Run Code Online (Sandbox Code Playgroud)

这有效,但我想做更多的事情:

cursor.execute("CREATE TABLE StarFrame(?) (etc etc)",self.name)
Run Code Online (Sandbox Code Playgroud)

虽然我明白这可能是不可能的.虽然我愿意接受类似的东西

cursor.execute("CREATE TABLE (?) (etc etc)",self.name)
Run Code Online (Sandbox Code Playgroud)

如果这根本不可能,我会接受这个答案,但如果有人知道如何做到这一点,请告诉我.:)

我在python中编码.

python database sqlite

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

Django"无法打开数据库文件"

运行"python manage.py syncdb"后,我得到一个错误,说"无法打开数据库文件".

这是我的settings.py的重要部分:

DATABASE_ENGINE = 'sqlite3'    # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'apps.db'      # Or path to database file if using sqlite3.
DATABASE_USER = ''             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
Run Code Online (Sandbox Code Playgroud)

这是"apps.db"的权限:

-rw-r--r-- 1 root root 33792 19. Jul 10:51 apps.db …
Run Code Online (Sandbox Code Playgroud)

database sqlite django django-models django-admin

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

构造System.Data.SQLite.SQLiteConnection时导致System.BadImageFormatException的原因

我已将代码分解为尽可能小的语句:

Dim cn As System.Data.SQLite.SQLiteConnection
Run Code Online (Sandbox Code Playgroud)

从WinForm应用程序调用代码时出现以下错误:

System.BadImageFormatException:无法加载文件或程序集'System.Data.SQLite,Version = 1.0.65.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.尝试加载格式不正确的程序.文件名:'System.Data.SQLite,Version = 1.0.65.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'

然而从MS单元测试调用相同的代码我没有得到错误,加上完整的代码集按预期工作.

.net sqlite system.data.sqlite 32bit-64bit

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

更改SQLite数据库版本号

我有一个我在SQLite浏览器中构建的数据库,它工作正常.我推出了一个带有预建数据库的应用程序,现在我想向该数据库添加更多表和数据.

我可以让应用程序启动SQLiteOpenHelper的onUpgrade方法.但问题是,每次使用帮助器时都会这样做.

我已将其本地化,仅在应用程序启动时,从我用于检索数据的帮助程序中分离升级命令,但这仍然是一个问题.

我已经弄清楚了,因为我从版本1开始在我的计算机上使用相同的数据库(我正在编辑的那个).所以,每当它将新的数据库写入SD卡时它就会显示版本1,即使我应该到现在为止版本4.

所以,我的问题是,如何手动编辑原始数据库的数据库版本,以便在更新时不是在新版本上编写旧版本号?

sqlite android version

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

为Django应用程序选择哪个数据库引擎?

我是Django的新手,并且只在Django中使用sqlite3作为数据库引擎.现在我正在研究的一个应用程序变得非常大,无论是在模型的复杂性还是请求/秒.

Django支持的数据库引擎如何在性能方面进行比较?使用其中任何一个的任何陷阱?最后但并非最不重要的是,一旦你使用了一个引擎,转换到另一个引擎有多容易?谢谢!

python database sqlite django

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

从应用程序内部代码中使用Alembic API

我正在使用SQLite作为我的基于PySide的桌面应用程序的应用程序文件格式(请参阅此处了解为什么要这样做).也就是说,当用户使用我的应用程序时,他们的数据将保存在其计算机上的单个数据库文件中.我正在使用SQLAlchemy ORM与数据库进行通信.

当我发布应用程序的新版本时,我可能会修改数据库架构.我不希望用户每次更改架构时都要丢弃他们的数据,所以我需要将他们的数据库迁移到最新的格式.此外,我创建了大量临时数据库来保存数据的子集,以便与某些外部进程一起使用.我想用alembic创建这些数据库,以便用正确的版本标记它们.

我有几个问题:

  • 有没有办法从我的Python代码中调用alembic?我认为必须使用Popen纯Python模块是很奇怪的,但是文档只是从命令行使用alembic.主要是,我需要将数据库位置更改为用户数据库所在的位置.

  • 如果这不可能,我可以从命令行指定新的数据库位置而不编辑.ini文件吗?这将使调用alembic Popen不是一件大事.

  • 我看到,alembic将其版本信息保存在一个名为的简单表中alembic_version,其中一列被调用version_num,一行指定了版本.我可以alembic_version在我的架构中添加一个表,并在创建新数据库时使用最新版本填充它,这样就没有开销吗?这甚至是个好主意; 我应该使用alembic来创建所有数据库吗?

我的alembic非常适合我在项目目录中使用的单个数据库.我想使用alembic在任意位置方便地迁移和创建数据库,最好是通过某种Python API,而不是命令行.此应用程序也被cx_Freeze冻结,以防有所作为.

谢谢!

python sqlite sqlalchemy alembic

35
推荐指数
5
解决办法
9454
查看次数

如何使用SQLite3导入tsv文件

我有一个tsv(制表符分隔文件),我想用sqlite3导入.有人知道一个明确的方法吗?

我已经安装了sqlite3,但还没有创建任何数据库或表.

我试过这个命令

.import /path/filename.tsv my_new_table
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:没有这样的表:my_new_table.

但是,根据我的阅读,它应该自动创建表,如果它不存在.这是否意味着我需要首先创建和使用数据库,还是有另一种技巧将.tsv文件导入sqlite?

csv sqlite tsv import-from-csv

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