个人博客搭建记录

来源:互联网 发布:tensorflow 例子 编辑:程序博客网 时间:2024/04/28 15:28

一、数据库设计

1、数据库设计要考虑好属性数据类型,数据长度。

2、数据库设计最开始一定要考虑好外键约束(不知道一张表的主键能不能作为外键,反正我没有设置成功)

3、数据库编码问题,反正中文让我很不爽。。。一直出错

我的是CentOS,安装mysql就有很多问题,对CentOS满是仇恨,要是Ubuntu,装一些软件都很少出问题,我这个CentOS装什么都出问题。

设置数据库编码utf8,更改my.cnf 文件,但是这个文件很另类,和一般的都不一样,我很不爽,都是CentOS惹的祸,配置一点东西就错了,起不了mysql。

便用ALTER DATABASE CHARACTER SET "utf8";  来改编码

但是改完了后还是不能插入中文,很不爽,不知道多少次被中文整惨了,对中文无感了。

最后我查呀查呀查,查python的编码问题,查数据库插入中文的问题,最后终于找到解决办法:

ALTER TABLE t_article_summary MODIFY COLUMN subtitle VARCHAR(255)  CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

对数据库设置了编码还要对表的每一列设置编码!!!!!!!!!!!

对中文无感了


utf-8是以三个字节来编码一个中文字的


重点在数据库的设计,不然后面在遇到数据组织的问题又要改很多地方


二、选择的编辑器:

选择的是CKEDITOR http://ckeditor.com/ 以及code snipped  插件来编辑代码文本。

这个解决了才能去进一步写网页



三、使用 tornado 框架的后台程序

1、python中对同一字典的多次操作很容易出问题,一定要注意python中引用与对象之间的联系与区别

def query_home_summary(self, conn):        summary_list = []        # summary_info = {        #     'id': '',        #     'title': '',        #     'subtitle': '',        #     'category': '',        #     'timestamp': ''        # }        # conn = self.connect()        c = conn.cursor()        sql = 'select * from ' + self.db_table + ' order by timestamp desc limit 6'        try:            c.execute(sql)            for item in c.fetchall():                """                此处对字典的操作很容易出问题,明白引用指向对象的问题                """                # summary_info['id'] = item[0]                # summary_info['title'] = item[1]                # summary_info['subtitle'] = item[2]                # summary_info['category'] = item[3]                # summary_info['timestamp'] = item[4]                id_ = item[0]                title = item[1]                subtitle = item[2]                category = item[3]                timestamp = item[4]                summary_info = dict(id=id_, title=title, subtitle=subtitle, category=category, timestamp=timestamp)                summary_list.append(summary_info)        except Exception, e:            print e        c.close()        return summary_list


上面例子中,注释部分是错误的,这个函数要做的是将多个字典放在list中最后返回,但是注释部分最后得到的list中的多个dict是一样的,都是和最后一个append的dict相同,因为dict中的key指向了同一对象。这个真是坑人。。。。最好是用dict()函数去生成多个字典对象,而不能用一个字典对象设置多个不同的value值,这样得到的多个字典最终都是一样的。


2、执行数据库sql语句,当数据有特殊字符要进行转义才行,不然执行sql不成功




0 0
原创粉丝点击