这是一个创建于 3374 天前的主题,其中的信息可能已经有所发展或是发生改变。
新人写SAE后台服务器,一开始什么都不会,代码都是参考SAE文档的。然后浏览器访问的时候出现了乱码。汉字都被相等数量的问号所代替,而英文和数字正常。汉字在MYSQL里面存储的方式是
varchar(20) utf8_general_ci 是可以没有乱码的。
SAE的MYSQL管理方式是PHPMyAdmin。
Python2.7.3,
DJango1.4,
MySQL存储引擎MyISAM 版本5.5.23-log
DJango的View.py代码如下
#!/usr/bin/python
#-*-coding:utf-8-*-
from django.http import HttpResponse
import sae
from mysql import mysql
from sae.mail import send_mail
def hello(request):
option = "select * from company where id=1;"
result = ''
result = result+str(mysql(option))
return HttpResponse(result)
同级目录有个mysql.py 代码如下
#!/usr/bin/python
#-*-coding:utf-8-*-
import MySQLdb
import sae.const
MYSQL_DB = sae.const.MYSQL_DB
MYSQL_USER = sae.const.MYSQL_USER
MYSQL_PASS = sae.const.MYSQL_PASS
MYSQL_HOST_M = sae.const.MYSQL_HOST
MYSQL_HOST_S = sae.const.MYSQL_HOST_S
MYSQL_PORT = int(sae.const.MYSQL_PORT)
def mysql(option):
connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS)
connection.select_db(MYSQL_DB)
connection.query(option)
r = connection.store_result()
result = r.fetch_row()
return result
尝试过connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS)
这句改成connection = MySQLdb.connection(host=MYSQL_HOST_M,port=MYSQL_PORT,user=MYSQL_USER,passwd=MYSQL_PASS,charset='utf8') 但是charset报错,出了一个TYPEERROR。invaild keyword 什么的。
去看MySQLdb 好像必须是connect()函数才可以用这个charset。但是SAE官方文档给了connection()。我不知道connection()怎么用。而connect()在SAE环境下不会用。求求各位大神帮忙解决。。
5 条回复 • 2015-02-23 00:35:07 +08:00
|
|
1
geeklian 2015-02-22 01:12:13 +08:00 via iPhone
好吧...虽然我没用过sae
但为啥django要写的这么不django,sae所限么?直接orm也会编码出问题么。
|
|
|
2
imlonghao 2015-02-22 09:58:49 +08:00 via Android
option = "select * from company where id=1;"
需要这样的还叫Django.............
|
|
|
3
imlonghao 2015-02-22 10:00:11 +08:00 via Android
如果是我,我会在 setting.py里面把这个设置了 import sae.const MYSQL_DB = sae.const.MYSQL_DB MYSQL_USER = sae.const.MYSQL_USER MYSQL_PASS = sae.const.MYSQL_PASS MYSQL_HOST_M = sae.const.MYSQL_HOST MYSQL_HOST_S = sae.const.MYSQL_HOST_S 而不是自己重写查询
|
|
|
4
dushurenbale 2015-02-22 14:08:55 +08:00
好吧。。我不知道django的规范写法。。。 全是看样例。然后自己修修补补。。 没敢动setting 因为不太懂django,如果SAE官方没给出代码也不敢用一些模板。。
|
|
|
5
shiroming 2015-02-23 00:35:07 +08:00 via Android
django是在models里面写数据库表和字段的 一般不用你这样写 直接orm views里面导入models 调用表.字段就完事了
没有遇到需要转码的地方 ~~
|