用单例和动态类在sqlalchemy中做动态表绑定
当我们的数据表需要分库的时候,如果使用了 sqlalchemy 来做 ORM,在做数据表和类关联的时候就很痛苦了,一个类只能和一个表关联。
当然还有一种方法就是修改 model.tablename.name 来解决,但是这个有个问题是只能绑定一次,实例化后修改就无效了。所以我们就需要使用 type 来动态的创建一个类,到这里问题又来了,如果在不同的时候创建了两个相同的类名的时候,程序就会抛出异常。所以类名必须是单例的。整个的实现如下:
当我们的数据表需要分库的时候,如果使用了 sqlalchemy 来做 ORM,在做数据表和类关联的时候就很痛苦了,一个类只能和一个表关联。
当然还有一种方法就是修改 model.tablename.name 来解决,但是这个有个问题是只能绑定一次,实例化后修改就无效了。所以我们就需要使用 type 来动态的创建一个类,到这里问题又来了,如果在不同的时候创建了两个相同的类名的时候,程序就会抛出异常。所以类名必须是单例的。整个的实现如下:
以下是对.net core 发布的尝试,内容完全来自微软官方的文档粘贴,主要是用来记录尝试的过程。
在很早以前,就通过地图 api 抓取的相关的省市区信息,其中有一个字段是 polylines ,里面是一组 gps 的坐标。为了离线来根据 gps 坐标获取省市区的信息,最开始想到的是使用 geohash 来计算出每个区域所包含的hash值,把所有的hash值存下来,这样查询变成了键值查询,如果 geohash精确到第8位,值偏差大概是19米,这个精度已经在我所能够承受的范围内了。
这是很久以前碰到的问题,一直躺在笔记里,没有整理出来。在 memecacheq 运行一段时间后会出现以下的问题,原因是 Berkeleydb 存储出问题了
1 | [memcacheq] [Wed Jun 3 17:02:11 2015] "BDB1546 unable to join the environment" |
前几天,小伙伴终于把测试服务器玩坏了,openssl 尝试了很久始终都不能正常的工作,不管是编译还是apt-get。最后还是决定重新装一下系统。记录一下其中做 ubuntu 启动盘的命令,一下部分内容来自网络,
前段时间发现了 go 写的博客生成程序,看到官网相关的介绍,最吸引人的一条就是只需要下载一个文件就可以运行了。
我一直用的是 hexo,就想着换 hugo 试试,最后感觉还是有些缺点,在所有准备工作都做完,为此还修改了一个python的转换程序出来,然后放弃了转换到 hugo 的想法
https://github.com/meolu/walle-web
walle 是一个代码部署工具,本来是最佳想用 python 写一个带 web 界面的代码部署工具。原因是前面用 shell 写的一个简单的部署有很多的问题。今天早上看到了这个,思路和我想要做的差不多,处理上线那块作者直接用 ssh。 由于我用的 saltstack在做管理,我是想用 saltstack 的接口来做部署.
昨天在 windows 上安装了wxpython,然后写了个 hello world
出来,想着在 mac 上看看效果,结果安装一直都不成功,用安装包安装提示找不到安装目标,用 brew 安装引用不成功。找到下面的解决方法
https://sublime.wbond.net/installation
菜单view > Show Console 调出命令行工具粘贴命令,之后重启
1 | import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by) |
执行不成功,可能需要代理 (我用的 ss +Privoxy)
菜单PreferencesSettings >> Settings –
User
1 | { |