Django 使用MYSQL数据库 Latin1
公司mysql统一用latin1的编码,真是叫人苦不堪言。Django用默认UTF8访问MYSQL数据库。在操作数据库时,不管你怎么转码,最终写到数据库里的中文都是乱码。在网上找了很久,也没解决这个问题。
后来看了一个DJANGO的MYSQL操作的源码,发现了一些问题 先是/django/db/backends/mysql/base.py 文件的 257 到263行
def _cursor(self):
if not self._valid_connection():
kwargs = {
'conv': django_conversions,
'charset': 'utf8',
'use_unicode': True,
}
关键在这两行2def _cursor(self):
261 'charset': 'utf8',
262 'use_unicode': True,
这说明,操作数据库用的是通用编码utf8 而且是硬编码进去的。如果我也硬编码改这里的话,以后有UTF8的库的话,就糟糕了。所以要想办法将这两项写到配置文件里。所以选注释掉这两行。在settings_dict = self.settings_dict 这行下面添加如下的代码
if settings_dict['USE_UNICODE']:
kwargs['use_unicode'] = settings_dict['USE_UNICODE']
else:
kwargs['use_unicode'] = True
if settings_dict['DATABASE_CHARSET']:
kwargs['charset'] = settings_dict['DATABASE_CHARSET']
修改settings.py 加入如下两行
TEST_DATABASE_CHARSET = 'latin1'
USE_UNICODE = False
但这样改了之后,会找不到DATABASE_CHARSET和USE_UNICODE 这说明在配置转进来之前做了筛选,再继续看这个文件/django/db/__init__.py 会看到这样的代码
connection = backend.DatabaseWrapper({
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_NAME': settings.DATABASE_NAME,
'DATABASE_OPTIONS': settings.DATABASE_OPTIONS,
'DATABASE_PASSWORD': settings.DATABASE_PASSWORD,
'DATABASE_PORT': settings.DATABASE_PORT,
'DATABASE_USER': settings.DATABASE_USER,
'TIME_ZONE':
相关文档:
how to install apache, PHP and MySQL on Linux
This tutorial explains the installation of Apache web server, bundled
with PHP and MySQL server on a Linux machine. The tutorial is primarily for SuSE
9.2, 9.3, 10.0 & 10.1, but most of the steps ought to be valid for all
Linux-like operating ......
1.PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (
`column`
)
3.INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.FULLTEX ......
今天找到了取mysql表和字段注释的语句
取字段注释
SELECT COLUMN_NAME 列名, DATA_TYPE 字段类型, COLUMN_COMMENT 字段注释
from INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'companies'##表名
AND table_schema = 'testhuicard'##数据库名
AND column_name LIKE 'c_name'##字段名
--------------------------- ......
本文从 http://tech.ddvip.com/2009-02/1235627800109815.html 装载,非常感谢作者!
MySQL+PHP产生乱码原因:
◆ MySQL数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MySQL乱码;
◆ MySQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MySQL乱码;
......