方法一:直接在models里连接mysql数据库,用sql语言操作
python2的代码:
1#coding=utf-8 2import MySQLdb 3 4conn= MySQLdb.connect( 5 host='localhost', 6 port = 3306, 7 user='root', 8 passwd='123456', 9 db ='test', 10 ) 11cur = conn.cursor() 12 13#创建数据表 14#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))") 15 16#插入一条数据 17#cur.execute("insert into student values('2','Tom','3 year 2 class','9')") 18 19 20#修改查询条件的数据 21#cur.execute("update student set class='3 year 1 class' where name = 'Tom'") 22 23#删除查询条件的数据 24#cur.execute("delete from student where age='9'") 25 26cur.close() 27conn.commit() 28conn.close()
python3的代码:
1# coding=utf-8 2import pymysql 3pymysql.install_as_MySQLdb() 4conn = pymysql.connect( 5 host='localhost', 6 port=3306, 7 user='root', 8 passwd='root', 9 db='test', 10) 11cur = conn.cursor() 12 13# 创建数据表 14cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))") 15 16# 插入一条数据 17# cur.execute("insert into student values('2','Tom','3 year 2 class','9')") 18 19 20# 修改查询条件的数据 21# cur.execute("update student set class='3 year 1 class' where name = 'Tom'") 22 23# 删除查询条件的数据 24# cur.execute("delete from student where age='9'") 25 26cur.close() 27conn.commit() 28conn.close()
方法二:利用pymysql模块操作
前提:安装pymysql模块,在mysql数据库中先建立相应表


settings.py文件里
1DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', 4 'NAME': 'mysql', 5 'HOST':'127.0.0.1', 6 #'PORT':'3306', 7 'USER':'root', 8 'PASSWORD':'123456', 9 } 10}
对应app下_init_.py文件
1import pymysql 2pymysql.install_as_MySQLdb()
建立模型
1from django.db import models 2 3# Create your models here. 4class user1(models.Model): 5 user=models.CharField(max_length=32) 6 pwd=models.CharField(max_length=32) 7#user1为表名,user为表user1下相应字段名
页面调用
1from django.shortcuts import render 2 3from App01 import models#相应app下导入models.py文件 4 5# Create your views here. 6def get_pro_a(request): 7 msg=models.user1.objects.filter().first() 8 return render(request,'GetProA.html')
建立模型,和页面调用的方法同sqlite3的方式
如何用pycharm查看mysql里的数据库
右侧有个database,点开后左上角有个“+”符号,选择Data Source-Mysql

Host处填写服务器名,Database处填写表名star,User处填写该表的登录用户名,Password处填写该表的密码

附加1:mysql表里输入内容时出现1366错误
解决:文字字段类型不支持中文,默认是瑞典语(一下为gbk示例)
1#ALTER TABLE 表格名 CONVERT TO CHARACTER SET gbk COLLATE gbk_chinese_ci 2ALTER TABLE 'catalogue_star_pro_a' CONVERT TO CHARACTER SET latin1_swedish_ci COLLATE gbk_chinese_ci 3
附加2:python里打印某张表的字段名称
1# coding=utf-8 2 3import pymysql 4pymysql.install_as_MySQLdb() 5conn = pymysql.connect( 6 host='127.0.0.1', 7 # port=3306, 8 user='root', 9 passwd='123456', 10 db='star', 11) 12cur = conn.cursor() 13Sql = "select * from star_pro_a" 14cur.execute(Sql) 15print('打印所有数据:',cur.description) 16result = cur.fetchall() 17data_dict=[] 18for field in cur.description: 19 data_dict.append(field[0]) 20print('打印字段名:',data_dict)

问题:无论怎么设置mysql的编码为utf-8,用python对读取数据后的内容始终是乱码?
1def get_pro_a(request): 2 msg = models.pro_a.objects.filter(id='1').first() 3 print(msg) 4 # 转成json数据格式 5 msgJson = json.dumps(dict([(attr, getattr(msg, attr)) for attr in [f.name for f in msg._meta.fields]]), ensure_ascii=False)#重点在dumps的时候要添加ensure_ascii=False这句,出现的就是中文了 6 print(msgJson) 7 return HttpResponse(msgJson)
ensure_ascii=False,这个相当重要

对于queryset格式的数据转为json格式
1from django.core import serializers 2def get_pro_a(request): 3 msgJson=serializers.serialize("json", models.a.objects.all(), ensure_ascii=False) 4 return HttpResponse(msgJson)