Django部分
Django Model:每一个Django Model都继承自django.db.models.Model,在Model当中每一个属性attribute都代表一个database field,通过Django Model API可以执行数据库的增删改查, 而不需要写一些数据库的查询语句
设置MySQL数据库的方法:
在setting.py里面设置
# used MySQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'csdn_test1',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
通过models.py设置数据库内的数据类型,然后执行命令
#生成数据库内容,执行更新
$ python manage.py migrate #命令行运行该命令
$ python manage.py makemigrations
#进入命令行模式
$ python manage.py shell
from article.models import Article
>>> #all和get的数据库查看操作
>>> Article.objects.all() #查看全部对象, 返回一个列表, 无对象返回空list
[<Article: Article object>, <Article: Article object>]
>>> Article.objects.get(id = 1) #返回符合条件的对象
<Article: Article object>
>>> #update数据库修改操作
>>> first = Article.objects.get(id = 1) #获取id = 1的对象
>>> first.title
'Hello World'
>>> first.date_time
datetime.datetime(2014, 12, 26, 13, 56, 48, 727425, tzinfo=<UTC>)
>>> first.content
'我们来做一个简单的数据库增加操作'
>>> first.category
'Python'
>>> first.content = 'Hello World, How are you'
>>> first.content #再次查看是否修改成功, 修改操作就是点语法
'Hello World, How are you'
自强学堂的内容不错:http://www.ziqiangxuetang.com/django/django-cms-develop2.html
翻译了官方文档例子部分:http://7sdream.github.io/django-intro-zh/part3/
python问题
IndentationError:expected an indented block错误,缩进问题!!!
HTML标签
(标签查询网址:http://www.monmonkey.com/rumenpian/html/index.html)
<br> - 换行,代表换行,直接接在语句后面
<body>
<h1>Hello World!</h1>
{% for i in total_list %}
<a href="{{ i.url }}"> {{ i.title }} </a><br>
{% endfor %}
</body>
http://www.runoob.com/html/html-tutorial.html
MySQL
数据库删除一个字段:
ALTER TABLE table_name DROP field_name;
添加用户 insert into mysql.user(Host,User,Password) values("localhost","test",password("1234"));
报以下的错误 ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误
mysql5.1以上版本,我是在5.6版本上操作的。
错语原因:
mysql用户表的中某些字段不能为空,没有默认值,
我的原因是多设了一个字段data_time,爬虫插入的时候,这个是空的,报错、
class csdn(models.Model):
title = models.CharField(max_length = 100)
url = models.CharField(max_length = 300,blank = True)
# date_time = models.DateTimeField(auto_now_add = True) #日期
使用语句删除了这个字段。参考上面内容。
因为Django自动创建的数据库,数据库表的字符设置不符合中文插入,是lanti类型,要修改为utf8
MySql表、字段、库的字符集修改及查看方法http://www.jb51.net/article/68856.htm
只是修改表的默认字符集:
只是修改表的默认字符集:
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
修改字段的字符集:
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
查看数据库编码:
SHOW CREATE DATABASE db_name;
查看表编码:
SHOW CREATE TABLE tbl_name;
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
Mysql插入中文错误:http://blog.csdn.net/ch717828/article/details/41357431
Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1
插入中文出错,查看数据库编码,修改后还是不行,因为表里面字段的编码还没有修改,修改后没问题
如下也是:http://blog.csdn.net/u011242745/article/details/51660344
问题描述:向数据库插入数据时出现:[Err] 1366 - Incorrect string value: '\xE5\x8D\x8E\xE5\xB8\x88' for column 'uaddr' at row 1
解决办法:将该表中的每一列的字符集都改为utf-8
http://blog.csdn.net/tzh476/article/details/52644271
1、已建立的表无法插入中文字符串,原因是因为数据表中的内容为latin1字符集,由下图的的资料可知,latin1字符集为8bit,这说明它是不能表示中文的,故而当然会报改错:
3、一些关于查看和修改字符集的MySQL知识:
http://www.2cto.com/database/201506/404703.html
这个错误的另外的解决方法:
在使用scrapy的时候:出现,重新创建表,在创建的时候就指定好字符集的设置。
https://zhidao.baidu.com/question/1368278524200929619.html
查看MySQL数据库表的命令介绍
mysql>show databases;//可以查看有哪些数据库,返回数据库名(databaseName)
mysql>use databaseName; //更换当前使用的数据库
mysql>show tables;
mysql>show tables; //返回当前数据库下的所有表的名称
或者也可以直接用以下命令
mysql>show tables from databaseName;//databaseName可以用show databases得来
mysql查看表结构命令,如下:
mysql>desc table_name;
show columns from 表名;
或者
describe 表名;
show create table 表名;
或者
use information_schema
select * from columns where table_name='表名';
关于如何查看MySQL版本和端口号:
mysql> show global variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
1 row in set (0.01 sec)
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.7.17, for Linux (x86_64) using EditLine wrapper
Connection id: 5
Current database: csdn_test1
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.17-0ubuntu0.16.04.2 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 1 day 1 hour 5 min 59 sec
Threads: 3 Questions: 4664 Slow queries: 0 Opens: 233 Flush tables: 1 Open tables: 98 Queries per second avg: 0.051
--------------
Scrapy
scrapy使用时的一些错误及解决方法http://blog.csdn.net/sunshine_in_moon/article/details/51250023
这文章里面:
第七个问题:‘ItemMeta’ object does not support item assignment.原来是是在初始化item对象是忘了在类名后加()了。比如有一个类名字叫A,而我初始化类对象时是这样的a=A忘记加括号了a=A(),这样才对。
[wc2] ERROR: Spider exception caught while processing
<http://www.whitecase.com/Attorneys/List.aspx?LastName=A> (referer: <None>):
[Failure instance: Traceback: <type 'exceptions.TypeError'>:
'ItemMeta' object does not support item assignment
解决方法:
Probably you meant item = FirmItem() instead of item = FirmItem?
Scrapy系列学习:
scrapy研究探索(二)——爬w3school.com.cn
TypeError: insert() takes exactly 2 arguments (3 given)
#in sql.py
class Sql:
@classmethod
def insert(cls,url,title):
# sql = 'INSERT INTO csdn (`url`,`title`) VALUES (%(url)s,%(title)s)'
sql = 'INSERT INTO article_csdn (`url`,`title`) VALUES (%(url)s,%(title)s)'
value = {
'url': url,
'title': title
}
cur.execute(sql, value)
cnx.commit()
#the reason is lack of cls
自学教程
有数据库,python,ruby,lua,java等等 http://www.yiibai.com/