我正在试图为GeoDjango安装Spatialite!
我已经在使用Homebrew了,它通常很简单方便,所以我最初尝试按照Homebrew的说明操作 GeoDjango.
但这不会安装任何数据库,即Spatialite.下一步是尝试安装Spatialite本身,但Django docs没有提供特定于Homebrew的指令.
我发现这个教程看起来很完美 - 一个Homebrew和virtualenv友好的Spatialite for GeoDjango安装.
但它不起作用......似乎我pysqlite与OS X附带的非空间启用的SQLite版本相关联,而不是我从Homebrew安装的Spatial-ised版本,我在Django尝试时遇到此错误连接到db:
"pysqlite库不支持C扩展加载.必须配置SQLite和pysqlite以允许加载扩展以使用SpatiaLite."
pysqlite的作者没有回应我在Github上寻求帮助的请求,我没有通过谷歌找到任何东西.
所以我回到绘图板并决定遵循GeoDjango文档中的"Mac OS X特定指令" ......通过安装KyngChaos二进制包中的各种地理库.
该文件说"在他们上面列出的顺序安装软件包",但我发现我不能安装UnixImageIO,而无需安装PROJ第一.下载Spatialite二进制文件(http://www.gaia-gis.it/spatialite-2.3.1/binaries.html)的文档中的链接已中断,因此我使用了来自KyngChaos的"Spatialite Tools v4.1".
继续下一步,我收到此错误:
$ spatialite geodjango.db "SELECT InitSpatialMetaData();"
SQLite header and source version mismatch
2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a
2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef
Run Code Online (Sandbox Code Playgroud)
在这一点上不确定是什么问题.
SO上有其他人已经走过了KyngChaos路线并且最终得到了相同的"两个SQLite和pysqlite必须配置为允许加载扩展"错误我从Homebrew路线得到了无论如何.
我发现这张票#17756用于添加pyspatialite对Django的支持 - pyspatialite应该是一种更简单的方式来处理pip install所有事情但不幸的是它也不起作用(请参阅对票底的评论).
我有点不愿意开始尝试从源头开始构建所有内容,因为我似乎可能会再次遇到同样的问题,但花费数小时谷歌搜索有关神秘的编译器错误,魔术标志和路径等的信息.
我准备放弃,只使用Postgres/PostGIS.
SQLite文档指定在DB中存储日期时间值的首选格式是使用Julian Day(使用内置函数).
但是,我在python(pysqlite,SQLAlchemy)中看到的所有框架都将datetime.datetime值存储为ISO格式的字符串.他们为什么这样做?
我通常会尝试调整框架以将日期时间存储为julianday,这非常痛苦.我开始怀疑这是值得的.
请与我分享您在这个领域的经验.坚持julianday有意义吗?
我有一个内部数据库连接的对象,它在整个生命周期中都是活动的.在程序运行结束时,必须提交和关闭连接.到目前为止,我已经使用了一个显式close方法,但这有点麻烦,特别是当调用代码中发生异常时.
我正在考虑使用这种__del__方法来关闭,但经过一些在线阅读后我有所顾虑.这是一种有效的使用模式吗?我可以确定内部资源是否可以__del__正确释放?
这次讨论提出了类似的问题但没有找到令人满意的答案 我不想有一个显式的close方法,并且使用with不是一个选项,因为我的对象不像开放式播放关闭那样简单,而是作为另一个更大的对象的成员保存,使用它在GUI中运行时.
C++有完美的工作析构函数,可以安全地释放资源,所以我认为Python也有同意的东西.由于某种原因,似乎并非如此,社区中的许多人发誓反对__del__.那么替代方案是什么?
我需要在python中将图像文件保存到sqlite数据库中.我找不到解决方案.我该怎么做?
提前致谢.
症状:在我的Django应用程序,当我打电话from pysqlite2._sqlite import *,我得到了回溯Symbol not found: _sqlite3_enable_load_extension时
背景:
我试过了
brew uninstall sqlite并brew uninstall python和重新安装将这些添加到我的.bash_profile
export PATH="$(brew --prefix sqlite)/bin:$PATH"
LDFLAGS="-L/usr/local/opt/sqlite/lib"
CPPFLAGS="-I/usr/local/opt/sqlite/include"
export PKG_CONFIG_PATH=“/usr/local/opt/sqlite/lib/pkgconfig”
Run Code Online (Sandbox Code Playgroud)python -c"import sqlite3"不会返回任何错误
追溯的要点:https://gist.github.com/xwchen/e9704fa34f0463d2117fe9fbb37922a1
我有一个django项目,它使用可以由外部工具写入的sqlite数据库.该文本应该是UTF-8,但在某些情况下,编码会出错.文本来自外部源,因此我无法控制编码.是的,我知道我可以在外部源和数据库之间写一个"包装层",但我不想这样做,特别是因为数据库已经包含了很多"坏"数据.
sqlite中的解决方案是将text_factory更改为:
lambda x: unicode(x, "utf-8", "ignore")
但是,我不知道如何告诉Django模型驱动程序.
我得到的例外是:
'Could not decode to UTF-8 column 'Text' with text'
in
/var/lib/python-support/python2.5/django/db/backends/sqlite3/base.py in execute
不知怎的,我需要告诉sqlite驱动程序不要尝试将文本解码为UTF-8(至少不使用标准算法,但它需要使用我的故障安全变体).
Gang,我开始玩pySQLite了,我正在尝试找一个例子,说明如果在db中存在新记录之前如何在插入新记录之前查询db的现有记录.我觉得我忽略了一个非常基本的功能.
谢谢!
试图让 jupyter (ipython3) 在 Python3.5 上运行,我使用安装它
sudo pip3 install jupyter
Run Code Online (Sandbox Code Playgroud)
但是,当尝试启动 jupyter notebook 时,我收到了模块 _sqlite3 和 pysqlite2 丢失的错误。我尝试通过 pip3 安装它们。对于 pysqlite2,似乎没有可用的版本(?)。对于 sqlite3 我得到
运行时错误:不得从 pypi 下载包“sqlite3”
Traceback (most recent call last): File "/usr/local/lib/python3.5/site-packages/notebook/services/sessions/sessionmanager.py", line 10, in <module>
import sqlite3 File "/usr/local/lib/python3.5/sqlite3/__init__.py", line 23, in <module>
from sqlite3.dbapi2 import * File "/usr/local/lib/python3.5/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import * ImportError: No module named '_sqlite3'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/jupyter-notebook", …Run Code Online (Sandbox Code Playgroud) 我需要在Amazon Linux中将sqlite版本3.8或更高版本与python一起使用。
我将sqlite安装更新为最新版本:
$ sqlite3 -version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d
Run Code Online (Sandbox Code Playgroud)
我也更新了pysqlite版本
pip install --upgrade pysqlite
Run Code Online (Sandbox Code Playgroud)
但是,我的pysqlite似乎仍然仅支持sqlite版本3.7:
$ python
>>> import sqlite3
>>> sqlite3.version
'2.6.0'
>>> sqlite3.sqlite_version
'3.7.17'
>>>
>>> from pysqlite2 import dbapi2 as sqlite
>>> sqlite.version
'2.8.3'
>>> sqlite.sqlite_version
'3.7.17'
Run Code Online (Sandbox Code Playgroud)
如何更新sqlite python API以支持较新版本的sqlite?
我想知道python2.5,pysqlite和apsw的 sqlite3之间的区别?当我尝试使用python2.5在windows vista上安装pysqlite时,我有一个颠簸的运行,请参阅以下内容:
windows/system32文件夹中并将sqlite3.dll放入c:/python25/Lib文件夹当试图在python shell中运行以下时:
>>> from pysqlite2 import test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pysqlite2\test\__init__.py", line 35, in <module>
from pysqlite2.test import dbapi, types, userfunctions, factory, transactions,\
File "pysqlite2\test\dbapi.py", line 27, in <module>
import pysqlite2.dbapi2 as sqlite
File "pysqlite2\dbapi2.py", line 27, in <module>
from pysqlite2._sqlite import *
ImportError: No module named _sqlite
Run Code Online (Sandbox Code Playgroud)我想知道任何有以上三种类型的sqlite绑定到python的经验可以评论他们的优点和缺点如表演我想知道是否值得尝试pysqlite或apsw
谢谢
pysqlite ×10
sqlite ×9
python ×8
django ×2
blob ×1
datetime ×1
destructor ×1
geodjango ×1
homebrew ×1
image ×1
linux ×1
python-3.x ×1
spatialite ×1
sqlalchemy ×1