Django同步数据库问题:
首先:
在pycharm上找到database插件,在左下角一个小框框里(现在不方便放图,抱歉),点击后就有这插件了,然后和mysql连接,连接之后测试是否成功。
之后:
在pycharm左下角有个终端,在里面cd到你django的项目目录下:
django1.8以后同步命令是:python manage.py makemigrations blog(你的app)
python manage.py migrate
这样就OK了
或者: python manage.py syncdb
最后:
在登录时如果忘了密码,可以重新建立超级账号,同样,在pycharm终端下:python manage.py createsuperuser
---------------------
作者:听雪声的春天
来源:优快云
原文:https://blog.youkuaiyun.com/grs294845170/article/details/71601396
版权声明:本文为博主原创文章,转载请附上博文链接!
django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet.报错原因及解决办法,可能不适用所有人!django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet.报错原因及解决办法,可能不适用所有人!寥寥几行,在此浪费了我两个小时…希望后人少走弯路哈哈哈
from moive.models import Course #我的目的是使用命令行进行对数据库的增删改查
具体报错信息:
Traceback (most recent call last):
File “”, line 1, in
File “/home/pyvip/Django2/moive/models.py”, line 7, in
class Department(models.Model):
File “/home/pyvip/.virtualenvs/Django2/lib/python3.5/site-packages/django/db/models/base.py”, line 100, in new
app_config = apps.get_containing_app_config(module)
File “/home/pyvip/.virtualenvs/Django2/lib/python3.5/site-packages/django/apps/registry.py”, line 244, in get_containing_app_config
self.check_apps_ready()
File “/home/pyvip/.virtualenvs/Django2/lib/python3.5/site-packages/django/apps/registry.py”, line 127, in check_apps_ready
raise AppRegistryNotReady(“Apps aren’t loaded yet.”)
django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet.
报错原因:
因为使用命令行进行对数据库的增删改查时,没有在项目根目录下运行python manage.py shell 命令 ,直接运行的python 命令,导致报错。
解决方案:
把python 命令直接换成 python manage.py shell 运行则完美解决!
---------------------
作者:启酱
来源:优快云
原文:https://blog.youkuaiyun.com/weixin_44335856/article/details/85346538
版权声明:本文为博主原创文章,转载请附上博文链接!
在python的开发中,遇到了这个错误:
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
解决方法如下:
在代码文件的最上方,添加如下代码:
import os,django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")# project_name 项目名称
django.setup()
作者:tianweitao
来源:优快云
原文:https://blog.youkuaiyun.com/tianweitao/article/details/50205391
版权声明:本文为博主原创文章,转载请附上博文链接!
处理C:\WINDOWS\system32>net start mysql 服务名无效。
C:\WINDOWS\system32>net start mysql 服务名无效。
如果解决cmd:net start mysql出现服务名无效的问题。
解决方法:如果只是显示服务名无效,如果输出net stop mysql还是无效,可能是因为你的mysql的名字输入的不对。
因为在你安装的时候很可能已经更改过这个名字,只是你没有注意,如下方式查看:
你先cmd然后输入,services.msc,会出现服务,然后找到你的mysql,上面的名称就是你当初设置的名字,然后打开管理员的名字重新输入net start mysql即可
同理(管理员)cmd:net stop mysql_name会关闭数据库。而且是直接关闭该服务。不会出现该数据库关闭但是服务没关的情况。
Python + Django 在使用migrate 的时候报错,有点坑 错误描述:
django.db.migrations.exceptions.BadMigrationError: Migration test in app no Migration class
这个错报出之前其实还有一个坑,就是导入mysql 模块的问题.
ImportError: No module named MySQLdb
在Ubuntu 环境下 安装mysql 依赖库的方法是:
apt-get install python-mysqldb```
网上有很多说明,但是注意自己的系统版本
好,接下来说这个No migration class 的问题
说之前先总结下使用migration 迁移策略的顺序.
第一步:创建数据库
第二步:在项目下的setting.py中配置数据库的相关设置.下面是我实测后的一个范例.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'UbuntuTest',
'USER': 'root',
'PASSWORD':'090201007',
'HOST':'192.168.1.99',
'PORT':'3306',
}
}
第三步:是在自己的app项目中的models创建模型,下面是我创建模型的实测范例.
class UserInfo(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
class TestInfo(models.Model):
datetime = models.CharField(max_length=10)
第四步:将自己的app在setting中的 INSTALLED_APPS 中添加.
INSTALLED_APPS = [
.......django默认安装的app,
yourappName,
]```
第五步开始执行命令:
python manager.py makemigrations
这个时候执行 这个命令 可能 会报上面提到的
django.db.migrations.exceptions.BadMigrationError: Migration test in app no Migration class
错误,因为我就遇到了.
参考了这个链接 删除自己app下migration 目录下的所有文件.
再运行 python manager.py makemigrations
eric@Eric:~/Eric/django/testDemo$ python manage.py makemigrations
Migrations for 'ericMigrations':
0001_initial.py:
- Create model TestInfo
- Create model UserInfo
我这就不报错了 在migration目录下创建了一个0001_initial.py的文件.创建成功.
接着第六步,运行下第二个命令
python manager.py migration
eric@Eric:~/Eric/django/testDemo$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, ericMigrations, contenttypes, auth, sessions
Running migrations:
Rendering model states... DONE
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 ericMigrations.0001_initial... OK
Applying sessions.0001_initial... OK
在数据库中查看创建表成功.
补充关于migration 迁移的两个摘抄的说明:
As the problem is related to the migration, you have to understand first how it works, django check you database schema compares it with your model then generates the migration script. Every migration script is executed one time, because django keep tracking you migrations. This is managed by a table called django_migrations that is created in your database the first time migrations are ran
两个不是翻译的关系 ?不同地方摘抄的.
谈谈机制:migrations机制有两个指令,第一个是makemigrations,第二个是migrate,生成migrations代码的makemigrations指令是用models里面的model和当前的migrations代码里面的model做对比,如果有新的修改,就生成新的migrations代码,migrate指令是用migrations目录中代码文件和django数据库djaong_migrations表中的代码文件做对比,如果表中没有,那就对这些没有的文件按顺序及依赖关系做migrate apply,然后再把代码文件名加进migrations表中
作者:机器人小雪
链接:https://www.jianshu.com/p/17c9586f6d66
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
看django操作数据库的时候 有写 def unicode(self) 这么写的作用是什么啊?
这个__str__的作用是美化打印出来的结果,使人类更方便查看。看下面例子,如果没有__st__方法,打印的结果是<main.Test object at 0x0000022D6D1387B8>格式,有了__str__方法后,打印时会按照__str__定义的格式来打印,打印结果为Name:xiaoming。
class Test:
def __init__(self, name, job):
self.name = name
self.job = job
def __str__(self):
return 'Name:' + self.name
instance = Test(‘xiaoming’, ‘Teacher’)
print(instance)
在Django中,如果用的是Python3的话就只能用__str__方法,如果是Python2的话就使用__unicode__方法。因为更安全
No changes detected in app ‘xxx’
暂时的方法,先删除数据库,再删除migrations 最后使用本文第一个标题,同步数据库
Django在根据models生成数据库表时报 init() missing 1 required positional argument: ‘on_delete’
解决办法:
将第十一行的代码改为:
herobook=models.ForeignKey(‘BookInfo’,on_delete=models.CASCADE,)
即在外键值的后面加上 on_delete=models.CASCADE
原因:
在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:
TypeError: init() missing 1 required positional argument: ‘on_delete’
举例说明:
user=models.OneToOneField(User)
owner=models.ForeignKey(UserProfile)
需要改成:
user=models.OneToOneField(User,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值
参数说明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。
一般情况下使用CASCADE就可以了。
创建超级管理员用户
python manage.py createsuperuser
Python错误TypeError: write() argument must be str, not bytes 小记一下,今天使用open打开文件的时候出现了下面的错误。
注:我用的是Python3.6.1版本。
TypeError: write() argument must be str, not bytes
网上搜索才发现原来是文件打开的方式有问题。
之前文件打开的语句是:
filehandle = open(WAV_FILE, ‘w’)
然后使用二进制方式打开就没有这个问题:
filehandle = open(WAV_FILE, ‘wb+’)
产生问题的原因是因为存储方式默认是二进制方式。
关于数据库的操作
http://www.liujiangblog.com/course/django/129
No module named MYSQLdb 问题解决
问题描述:
报错:ImportError: No module named MySQLdb
对于不同的系统和程序有如下的解决方法:
easy_install mysql-python (mix os)
pip install mysql-python (mix os)
apt-get install python-mysqldb (Linux Ubuntu)
cd/usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
yum install MySQL-python (linux Fedora, CentOS)
pip install mysqlclient (Windows)
Django报错:” File “manage.py”, line 14 ) from exc ^ SyntaxError: invalid syntax” 2018年10月28日 22:28:23 杨宝宝与小木马 阅读数:2667 Django 1.7.1及以上 用以下命令
1. 创建更改的文件
python manage.py makemigrations
2. 将生成的py文件应用到数据库
python manage.py migrate
报错:
File "manage.py", line 14
) from exc
^
SyntaxError: invalid syntax
后来发现,不能用python 这个命令来执行,得用python3 来执行以上的命令,才能创建数据库。
python3 manage.py migrate
vim 进入退出编辑文件
进入编辑模式,按 o 进行编辑
编辑结束,按ESC 键 跳到命令模式,然后输入退出命令:
:w保存文件但不退出vi 编辑
:w! 强制保存,不退出vi 编辑
:w file将修改另存到file中,不退出vi 编辑
:wq保存文件并退出vi 编辑
:wq!强制保存文件并退出vi 编辑
q:不保存文件并退出vi 编辑
:q!不保存文件并强制退出vi 编辑
:e!放弃所有修改,从上次保存文件开始在编辑
**
数据库操作
**
http://www.pianshen.com/article/61694293/
修改数据库字符集
https://www.cnblogs.com/sxwen/p/7851031.html
mysql用sql语句创建表和数据库怎么设置字符编码’
– 创建数据库时,设置数据库的编码方式
– CHARACTER SET:指定数据库采用的字符集,utf8不能写成utf-8
– COLLATE:指定数据库字符集的排序规则,utf8的默认排序规则为utf8_general_ci(通过show character set查看)
drop database if EXISTS dbtest;
create database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;
– 修改数据库编码
alter database dbtest CHARACTER SET GBK COLLATE gbk_chinese_ci;
alter database dbtest CHARACTER SET utf8 COLLATE utf8_general_ci;
– 创建表时,设置表、字段编码
use dbtest;
drop table if exists tbtest;
create table tbtest(
id int(10) auto_increment,
user_name varchar(60) CHARACTER SET GBK COLLATE gbk_chinese_ci,
email varchar(60),
PRIMARY key(id)
)CHARACTER SET utf8 COLLATE utf8_general_ci;
– 修改表编码
alter table tbtest character set utf8 COLLATE utf8_general_ci;
– 修改字段编码
ALTER TABLE tbtest MODIFY email VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci;
– 查看所有的字符编码
SHOW CHARACTER SET;
– 查看创建数据库的指令并查看数据库使用的编码
show create database dbtest;
– 查看数据库编码:
show variables like '%char%';
– 设置character_set_server、set character_set_client和set character_set_results
set character_set_server = utf8; – 服务器的默认字符集。使用这个语句可以修改成功,但重启服务后会失效。根本的办法是修改配置MYSQL文件MY.INI,
character_set_server=utf8,配置到mysqld字段下。
set character_set_client = gbk; – 来自客户端的语句的字符集。服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。
set character_set_results = gbk; – 用于向客户端返回查询结果的字符集。character_set_results变量指示服务器返回查询结果到客户端使用的字符集。包括结果数据,例如列值和结果元数据(如列名)。
– 查看某字段使用的编码:
SELECT CHARSET(email) FROM tbtest;