Python接入mysql数据库 原

方法一:直接在models里连接mysql数据库,用sql语言操作

python2的代码:

#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的代码:

# 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模块操作

前提:安装pymysql模块,在mysql数据库中先建立相应表

settings.py文件里

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()

建立模型

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下相应字段名

页面调用

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里的数据库

右侧有个database,点开后左上角有个“+”符号,选择Data Source-Mysql

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

附加1:mysql表里输入内容时出现1366错误

解决:文字字段类型不支持中文,默认是瑞典语(一下为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

附加2:python里打印某张表的字段名称

# 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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏岑玉海

Hive Tunning(二)优化存储

接着上一章我们讲的hive的连接策略,现在我们讲一下hive的数据存储。 下面是hive支持的数据存储格式,有我们常见的文本,JSON,XML,这里我们主要...

4094
来自专栏黑白安全

二次注入代码剖析

本文针对二次注入进行讲解,并简单的绕过360脚本waf。。。。。 首先来看程序的注册页面代码:

2122
来自专栏DeveWork

WordPress主题下funtions.php的一段“恶意”代码

不多说了,相信有很多WordPresser都知道这段在WordPress主题下fountions.php的“恶意”代码,之所以为“恶意”加个双引号是想说:其实也...

31210
来自专栏跟着阿笨一起玩NET

plsql developer的一些使用

982
来自专栏逍遥剑客的游戏开发

关于Singleton

1402
来自专栏一枝花算不算浪漫

[Java面试十二]数据库概念相关

37511
来自专栏python学习路

一、Mysql(1)

  数据库简介 人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为...

3649
来自专栏乐百川的学习频道

使用sqlite3 模块操作sqlite3数据库

Python内置了sqlite3模块,可以操作流行的嵌入式数据库sqlite3。如果看了我前面的使用 pymysql 操作MySQL数据库这篇文章就更简单了。因...

2037
来自专栏数据和云

深入剖析-关于分页语句的性能优化

分页语句是数据库开发和应用场景比较常见的需求,即按照特定的where条件进行过滤,然后在按照一个或者多个条件进行排序(如果不进行排序无法确执行时候无法返回相同的...

2839
来自专栏java工会

java设计模式-单例模式

1836

扫码关注云+社区

领取腾讯云代金券