一、数据库设计
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
2、执行数据库sql语句,当数据有特殊字符要进行转义才行,不然执行sql不成功