在给django项目添加事物管理时遇到的一些问题
:Python    :kukei    :2014-08-13 16:36:51
:评论(0)

今天在给sdcms项目的商品管理模块添加事物控制时发现,使用了各种装饰和with方法以及手动控制事物后依然没回滚,一度让我很迷茫。最后开始怀疑是不是mysql的问题,果然检查了mysql的存储引擎后发现,mysql默认引擎是MyISAM,但是它不支持事物,只有使用InnonDB引擎才行。此时我想起了以前遇见过这个问题,许久不用给忘记了。

解决方法

1.查看引擎

mysql> show engines;
EngineSupportCommentTransactionsXASavepoints
MyISAMDEFAULTDefault engine as of MySQL 3.23 with great perform...NONONO
CSVYESCSV storage engineNONONO
MRG_MYISAMYESCollection of identical MyISAM tablesNONONO
BLACKHOLEYES/d.....
BAE3Python版本上用cache存储django的session的方法
:Baidu    :kukei    :2013-11-04 13:06:52
:评论(2)

Django是一个自带session功能的python版web框架,session的支持存储方式支持memcache,数据库,文件等;当然最快的自然是memcache了,但是当将django应用部署到bae3上的时候会发现,按默认的配置是无法成功运行起来的,原因是bae3提供的cache是非标准memcache接口;

bae3提供的cache接口与标准接口相比有以下两个差异:

  1. cache初始化时需要提供用户名密码;这个可以理解,因为bae3的cache是分布式的,并非和应用在同一主机,bae需要搞清楚那个应用的cache在哪儿部署着呢。

  2. cache的key值必须是string类型,我用unicode就报错了。

鉴于以上的情况我们需要修改一些django提供的session引擎,就是修改setting.py文件中的“SESSION_ENGINE”为自己的类, 比如我就把它改为“SESSION_ENGINE = 'sd.com.lib.se.....

BAE3.0初探
:Baidu    :kukei    :2013-11-01 17:51:09
:评论(3)

BAE3.0发布了有段时间了,我早已经有了测试权限我还不知道,是在调试其他问题时BAE的工程师提醒我的,我就关注了一下BAE3.0,并且把我的应用sdlog迁移到了3.0上。

BAE3.0给我的第一感觉很好(难道是我对老界面审美疲劳了?),因为前一段我用BAE上的Frontia做了一些测试,还做了一个小的Android应用在百度商店发布了,所有这一切都在BAE3.0的界面上做的操作和管理。

就BAE3.0上的云引擎而言,已经摆脱了SAE模仿者的影子,是一个全新的模式;可以给一个应用调配多个执行单元(每个执行单元相当于一个虚拟机,据说一个单元可以支撑一天千万级别的访问,不带cache和数据库);mysql数据库提供了地址、用户名、密码、端口,这样开发者使用起来和迁移起来都更方便。提供了更多样的日志类型,提供了NFS功能以及原来2.0上的其他服务。这次还提供了本地开发环境,虽然很复杂,而且我也没安装成功,但是依然欣喜。

BAE上安装第三方.....

django中使用oracle数据库的配置
:Python    :kukei    :2013-01-07 14:55:09
:评论(1)

工作中需要开发一个小系统,现在有的环境是支持python的,我计划是用python+django+oracle的配置来做开发,服务器是一个IBM的小型机,使用apache+mod_python配置。

我以前是用django都是用的mysql数据库,服务器都是用的nginx+uWsgi做配置;此次是一个新的尝试。

服务器方面很好搞定,apache+mod_python配置网上教程满天飞,而且之前我也适用apache很久了。django+oracle倒是第一次,首先需要下载一个cx_oracle的类库,下载时注意区分win版本和linux版本,注意python的版本号,注意oralce的版本号,好麻烦啊。

django配置如下:

#数据库连接配置
DATABASES = {'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'actdb.....
django中基于memcache的session中dict允许几层呢?
:Python    :kukei    :2012-11-29 14:47:58
:评论(1)

使用django框架时session有多种存储方式可供选择,其中我认为基于memcache是最快的,因此我的应用中均用memcache做session的存储,而且现在的云计算平台比如gae,sae,bae以及准备中的ace都支持memcache。然而我在使用中发现了一个问题就如果session中存储的值是字典的话,到第三层是无法保存的。如比我的session存储的结构如下:

user=Users()
#其中user中有个字典属性childMeta
power = {'isLogin':False, 'user':None}

如果将power保存到session中时childMeta字典中的值会丢失,这个现象在bae是完全丢失。在sae上时偶尔丢失(第一次肯定丢失),我测试看到的现象是这样。在本机测试是没有这个问题的,因此我怀疑是ae平台做了什么限制,或者ae平台的其他限制影响到了这个功能。

在此记录此事,以备以后进一步研究。

其实对.....

Django之模型(model)中的choices字段的使用
:Python    :kukei    :2012-11-19 11:18:23
:评论(1)

Django模型中的字段有个choices属性,这个属性可以提供被选数据。如果一个字段设置了这个属性,在模版中如果我要显示这个字段,那么django模版系统就会将它默认解析为一个下来菜单,这样对于一个静态的下拉菜单式很方便的,下来我们看下django官方文档中对这个属性使用的介绍。

我们这儿有个例子,我们先定义一个模型,名字为Person ,这个Person 包含了名字和性别两个字段,代码如下:

from django.db import models
class Person(models.Model):
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    name = models.CharField(max_length=60)
    gender = models.CharField(max_.....
Django中的多表关联方法select_related
:Python    :kukei    :2012-09-07 15:06:46
:评论(1)

以前看django文档时没有认真看这个函数,和当时看values一样都是一眼带过,没有真正弄懂这个函数是干用的,以至于我在使用django时也正抱怨,为什么django在取出一个对象时没把这个对象关联的外键对象也取出来,反而在用到这个外键的内容时再到数据库中去取,这样岂不是要两次连接数据库么?如果我一次取出多个对象,循环在界面上展示出来,它就要成倍的连接数据库,框架这样处理就太傻了吧,看到今天这个函数select_related,我算明白了,原来是否取出外键的值,控制权在自己手中,是我错怪django了。

看看网友提供的解释说明:

Django获取数据实体的时候,返回的对象一个实体或多个实体,也就是QuerySet,它是Django专有的东西,具体的理解,它是类似Python的字典的东西,但它并不实现字典的所有方法。今天讲解的是它其中的一个函数select_related()。


select_related()使用的场景,是获取实体的.....
Django的模型中values函数的使用
:Python    :kukei    :2012-08-27 18:22:53
:评论(1)

django的数据库操作很简单,一个Model.objects.all()就能把数据取出来,但是取出来的是包含了所有的字段,而我的模型Posts中有个content字段特别大,我希望取列表是不取这个字段,因此将模型中加了个自定义的函数,模型如下:

class PostsManager(models.Manager):
    def getByIdorName(self, args):
        sql_str = 'select id,title,name,content,catalog_id,author,status,crtdate,moddate,crtip,readcnt,commentcnt,isComment from %s ' \
                    %(self.model._meta.db_table)
        if args.has_key('id'):
     .....