django 项目中mysql 的编码,数据库迁移问题

以管理员的身份进入cmd

net start mysql

mysql -u root -p

没有密码直接回车,进入mysql可以创建数据库,

如退出mysql  执行 \q:命令

创建数据库  记得指定编码    create database orm_1128 character set utf8;  orm_1128是数据库名字

修改数据库的字符集mysql>use mydb

mysql>alter database mydb character set utf8;

如果报错,

ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)

是因为在mysql5.6版本以后,就需要输入密码了,

设置新密码,123,下次再登录的时候就要输入密码123,

mysql> set password for root@localhost = password(‘123‘);
Query OK, 0 rows affected, 1 warning (0.29 sec)

=====

查看数据库  ,可以看到已经创建的表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bookmanage1        |
| bookmanage2        |
| db1                |
| db2                |
| gu_orm             |
| myorm              |
| mysql              |
| performance_schema |
| s5orm              |
| school             |
| sys                |
+--------------------+
12 rows in set (0.06 sec)

选择自己要修改的编码的  数据库,然后可以执行 \s; 命令 看到表的数据库的编码等信息,进行修改

mysql> use gu_orm;
Database changed
mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.18, for Win64 (x86_64)

Connection id:          70
Current database:       gu_orm
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.7.18 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    gbk--------------------------------------------------------------
Conn.  characterset:    gbk-----------------------------------------------------------------------
TCP port:               3306
Uptime:                 14 hours 39 min 56 sec

Threads: 4  Questions: 860  Slow queries: 0  Opens: 365  Flush tables: 1  Open tables: 256  Queries per second avg: 0.016
--------------

mysql> set character_set_client=utf8;------修改编码
Query OK, 0 rows affected (0.05 sec)

创建表后如果出错---

File "C:\Python36\lib\site-packages\django\db\backends\mysql\base.py", line 30, in <module>
    ‘Did you install mysqlclient or MySQL-python?‘ % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MyS
QLdb‘.
Did you install mysqlclient or MySQL-python?

C:\Users\lenovo\PycharmProjects\gu_ORM_11month>

没有mysqldb(驱动)???

在python2之前的版本中是MySQLdb支持,到python3以后都用pymsql,

只需要调一下,在项目的下的__init__.py文件中 导入 import pymsql

写上 pymysql.install_as-MySQLdb() ,就行,

在创建一对多的表的时候,记得把主表,一 的表放在 多 的表前面,要不生成数据库时会报错

执行python manage.py makemigrations

python manage.py migrate

创建好数据库以后,可以在cmd里看下数据库,

use 数据库名字  ,进入数据库, \s 命令查看数据库信息

show tables;  查看表

mysql> use gu_ORM
Database changed
mysql> show table
    -> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘ at line 1
mysql> show tables;
+----------------------------+
| Tables_in_gu_orm           |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
| gu_orm_book                |
| gu_orm_publish             |
+----------------------------+
12 rows in set (0.00 sec)

看到这里,就说明已经与数据库连接上了,与pycharm里的表一样

但每次都在cmd查数据不方便,就可以在pycharm里设置,

表就会出现,apply ,OK ,可以使用了

一对多的表,先对一 的表插入数据,然后在多的表才能插入数据,因为先对多的表插入数据时,有一个外键,需要数据,所以先对一 的表插入数据,

关于数据库的编码问题

show create table 数据库的表名;  查看 表的编码

alter table 数据库的表名 charset utf8;  修改表的编码

-------

重新迁移数据库时会发生的错误,

C:\Users\lenovo\PycharmProjects\gu_ORM_11month>python manage.py makemigrations
No changes detected

记得在后面加上app名字

C:\Users\lenovo\PycharmProjects\gu_ORM_11month>python manage.py makemigrations gu_orm
Migrations for ‘gu_orm‘:
  gu_orm\migrations\0001_initial.py
    - Create model Book
    - Create model Publish
    - Add field pu

blish to book

在执行python manage.py migrate

C:\Users\lenovo\PycharmProjects\gu_ORM_11month>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, gu_orm, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying gu_orm.0001_initial... OK
  Applying sessions.0001_initial... OK
时间: 2024-10-08 17:51:45

django 项目中mysql 的编码,数据库迁移问题的相关文章

Django项目与mysql交互进行数据迁移时报错:AttributeError: &#39;str&#39; object has no attribute &#39;decode&#39;

问题描述 Django项目启动,当我们执行命令 python manage.py makemigrations 出现如下错误: File "/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/operations.py", line 147, in last_executed_query query = query.decode(errors='replace') AttributeError: 'str' o

phpMyAdmin中mysql的创建数据库时的编码的问题

转载自新浪博客    Sean 一. mysql中utf8编码的utf8_bin,utf8_general_cs,utf8_general_ci的区别 utf8_general_ci 不区分大小写,这个你在注册用户名和邮箱的时候就要使用. utf8_general_cs 区分大小写,如果用户名和邮箱用这个 就会照成不良后果 utf8_bin: compare strings by the binary value of each character in the string 将字符串每个字符串

Django项目中使用Redis

Django项目中使用Redis DjangoRedis 1 redis Redis 是一个 key-value 存储系统,常用于缓存的存储.django-redis 基于 BSD 许可, 是一个使 Django 支持 Redis cache/session 后端的全功能组件. 1.1 为何要用 django-redis ? 持续更新 本地化的 redis-py URL 符号连接字符串 可扩展客户端 可扩展解析器 可扩展序列器 默认客户端主/从支持 完善的测试 已在一些项目的生产环境中作为 ca

django项目中遇到要实现定时任务

django项目中遇到要实现定时任务,所以选用了简单易用的django-crontab插件. 1.安装 django-crontab pip install django-crontab 2.定时要执行的脚本 先写个简单的测试脚本. ipoms/crons.py import datetime def update_stock_status(): start_time = datetime.datetime.now() print start_time, ", begin update_stoc

Pycharm中的Django项目连接mysql数据库

一.安装Pycharm和Django就不详细说了,自行百度 二.新建Django项目也不说了 三.配置Django连接到mysql 1.models.py写一个类,继承models.Model class Book(models.Model): name=models.CharField(max_length=20) price=models.IntegerField() pub_date=models.DateField() 2.修改settings.py文件 DATABASES = { 'd

从数据库反向生成django项目中的models文件

1.创建一个django项目 2.在项目配置文件settings.py中配置好数据库的相关配置 3.确保所关联的数据库中已经有表存在 4.在pycharm终端进入到项目的根目录,执行python manage.py inspectdb,查看可以导入到models的相关信息 5.执行python manage.py inspectdb > (需要导入表的app)/models.py,即可完成反向生成models文件 6.进入models文件进行相关修改 原文地址:https://www.cnblo

mac osx 上面部署Django项目 apache+mysql+mod_wsgi

1.安装Xcode command line tools 首先,编译mysql和Homebrew需要用到Xcode command line tools,所以首先安装command line tools: 如果安装了Xcode,只需要“Preferences… > Downloads”,之后点击Command Line Tools安装按钮: 如果没有Xcode,去https://developer.apple.com/downloads,搜索Command Line Tools 下载安装 2.安

django项目中购物车的实现

对于做项目而言,最重要的是分析清楚自己负责模块的思路,确定思路后,把每一步实现的步骤确定后,根据步骤,去实现代码,测试. 购物车的逻辑:    登录用户可以添加购物车,未登陆用户页可以添加到购物车    登陆用户的保存user.id sku_id count selected      保存在redis中,以hash和set两种方式保存    未登陆用户保存sku_id count selectd  保存再cookie中    cart = {            sku_id:{count:

2. Code First Migrations With Entity Framework【EF中 Code-First 方式的数据库迁移】

前面的文章中,学习了EF 中的几种关系,一对一,一对多,多对多.但是相信大家肯定会有疑问: 1.我难道每次都要创建数据库么? 2.我怎么样从已经存在的表中,添加字段和移除字段呢? 3.当我向表中,添加字段或者移除字段,我怎么来避免丢失数据呢? 4.当数据库发生改变的时候,我怎么获取到创建数据库的脚本呢? 不用着急,这篇文章,我会向大家一一讲到: 首先,说说我们为什么要使用数据库迁移技术吧,因为我们的实体总是变动地很频繁,在上篇文章中,我们使用了数据库初始化策略来做,也就是每次当数据库不存在的时候