python2的代码:html
#coding=utf-8 import MySQLdb conn= MySQLdb.connect( host='localhost', port = 3306, user='root', passwd='123456', db ='test', ) cur = conn.cursor() #建立数据表 #cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))") #插入一条数据 #cur.execute("insert into student values('2','Tom','3 year 2 class','9')") #修改查询条件的数据 #cur.execute("update student set class='3 year 1 class' where name = 'Tom'") #删除查询条件的数据 #cur.execute("delete from student where age='9'") cur.close() conn.commit() conn.close()
python3的代码:python
# coding=utf-8 import pymysql pymysql.install_as_MySQLdb() conn = pymysql.connect( host='localhost', port=3306, user='root', passwd='root', db='test', ) cur = conn.cursor() # 建立数据表 cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))") # 插入一条数据 # cur.execute("insert into student values('2','Tom','3 year 2 class','9')") # 修改查询条件的数据 # cur.execute("update student set class='3 year 1 class' where name = 'Tom'") # 删除查询条件的数据 # cur.execute("delete from student where age='9'") cur.close() conn.commit() conn.close()
前提:安装pymysql模块,在mysql数据库中先创建相应表mysql
settings.py文件里sql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysql', 'HOST':'127.0.0.1', #'PORT':'3306', 'USER':'root', 'PASSWORD':'123456', } }
对应app下_init_.py文件数据库
import pymysql pymysql.install_as_MySQLdb()
创建模型django
from django.db import models # Create your models here. class user1(models.Model): user=models.CharField(max_length=32) pwd=models.CharField(max_length=32) #user1为表名,user为表user1下相应字段名
页面调用json
from django.shortcuts import render from App01 import models#相应app下导入models.py文件 # Create your views here. def get_pro_a(request): msg=models.user1.objects.filter().first() return render(request,'GetProA.html')
创建模型,和页面调用的方法同sqlite3的方式服务器
如何用pycharm查看mysql里的数据库app
右侧有个database,点开后左上角有个“+”符号,选择Data Source-Mysqlfetch
Host处填写服务器名,Database处填写表名star,User处填写该表的登陆用户名,Password处填写该表的密码
解决:文字字段类型不支持中文,默认是瑞典语(一下为gbk示例)
#ALTER TABLE 表格名 CONVERT TO CHARACTER SET gbk COLLATE gbk_chinese_ci ALTER TABLE 'catalogue_star_pro_a' CONVERT TO CHARACTER SET latin1_swedish_ci COLLATE gbk_chinese_ci
# coding=utf-8 import pymysql pymysql.install_as_MySQLdb() conn = pymysql.connect( host='127.0.0.1', # port=3306, user='root', passwd='123456', db='star', ) cur = conn.cursor() Sql = "select * from star_pro_a" cur.execute(Sql) print('打印全部数据:',cur.description) result = cur.fetchall() data_dict=[] for field in cur.description: data_dict.append(field[0]) print('打印字段名:',data_dict)
问题:不管怎么设置mysql的编码为utf-8,用python对读取数据后的内容始终是乱码?
def get_pro_a(request): msg = models.pro_a.objects.filter(id='1').first() print(msg) # 转成json数据格式 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这句,出现的就是中文了 print(msgJson) return HttpResponse(msgJson)
ensure_ascii=False,这个至关重要
对于queryset格式的数据转为json格式
from django.core import serializers def get_pro_a(request): msgJson=serializers.serialize("json", models.a.objects.all(), ensure_ascii=False) return HttpResponse(msgJson)