前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python接入mysql数据库 原

Python接入mysql数据库 原

作者头像
晓歌
发布2018-08-15 13:10:58
6570
发布2018-08-15 13:10:58
举报
文章被收录于专栏:破晓之歌破晓之歌

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

python2的代码:

代码语言:javascript
复制
#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的代码:

代码语言:javascript
复制
# 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文件里

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql',
        'HOST':'127.0.0.1',
        #'PORT':'3306',
        'USER':'root',
        'PASSWORD':'123456',
    }
}

对应app下_init_.py文件

代码语言:javascript
复制
import pymysql
pymysql.install_as_MySQLdb()

建立模型

代码语言:javascript
复制
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下相应字段名

页面调用

代码语言:javascript
复制
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示例)

代码语言:javascript
复制
#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里打印某张表的字段名称

代码语言:javascript
复制
# 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对读取数据后的内容始终是乱码?

代码语言:javascript
复制
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格式

代码语言:javascript
复制
from django.core import serializers
def get_pro_a(request):
    msgJson=serializers.serialize("json", models.a.objects.all(), ensure_ascii=False)
    return HttpResponse(msgJson)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法一:直接在models里连接mysql数据库,用sql语言操作
  • 方法二:利用pymysql模块操作
    • 附加1:mysql表里输入内容时出现1366错误
      • 附加2:python里打印某张表的字段名称
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档