Python接入mysql数据库

方法一:直接在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)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python接入mysql数据库 - HelloWorld