自己在学习python的过程中,遇到调用数据库的场景主要有两种:1、在Django中通过API接口获取mysql中的数据,2、平时写脚本时直接通过python来进行mysql的数据读取和写入操作。 第一种Dj
自己在学习python的过程中,遇到调用数据库的场景主要有两种:1、在Django中通过API接口获取mysql中的数据,2、平时写脚本时直接通过python来进行mysql的数据读取和写入操作。
第一种Django下的部分用法总结
在Django框架中,对于数据库的账号密码配置文件在settings.py下,自己常用的几个API接口调用用法如下:
以下为Django中models.py中的内容from django.db import models
# Create your models here.
class Server(models.Model):
中间省略
@staticmethod
def get_by_server(servername,numc):
apps = Server.objects.get(appuse=servername, env=numc) #获取一条指定的数据
apps = Server.objects.filter(status=Server.STATUS_NORMAL) #过滤出符合该条件的所有数据
return apps
'''个人总结,#classmethod一般用于view中的class类中引用,用法与staticmethod不太一样'''
@classmethod
def get_some(cls):
num = cls.objects.filter(status=cls.STATUS_SHOW)
return num
class envlist(models.Model):
env_name = models.CharField(max_length=200)
env_description = models.CharField(max_length=200)
def __str__(self):
return self.env_name
class Meta:
verbose_name = verbose_name_plural = '环境列表'
@classmethod
def get_env_list(cls):
queryset = envlist.objects.all()
return queryset #获取所有的数据
然后在django的View.py中进行调用,以下为views.py部分代码
class CommonViewMixin :
def get_context_data(self, **kwargs) :
context = super(CommonViewMixin, self).get_context_data(**kwargs)
context.update({
'sidebars' : SideBar.get_all(),
'navs' : navs.get_all(),
})
return context
class IndexView(CommonViewMixin, ListView) :
queryset = envlist.get_env_list()
template_name = 'blog/list.html'
class APPFUNCView(IndexView) :
def get_context_data(self, **kwargs) :
context = super().get_context_data(**kwargs)
ENVS = self.queryset.exclude(id__in=[3]) #从models.py中获取的数据中排除第3个
context.update({
'ENVS' : ENVS, #在context中增加环境参数传递给下面的blog/IPRedirect.html
})
return context
template_name = 'blog/IPRedirect.html'
第二种就是直接用python去执行sql,一般写脚本中用的比较多
# D:\Program Files (x86)\Python36# -*- coding=utf-8 -*-
import pymysql.cursors
def change(username, newpass) :
# 连接数据库
conn = pymysql.Connect(
user="testuser", #mysql账号
password="testpassword", #mysql密码
port=3306, #mysql 端口
host="10.50.32.133", #mysql IP地址
db="webviews", #mysql schema
charset="utf8"
)
cursor = conn.cursor()
sqlupdate = "update webviews.users set password = '%s' where username = '%s';" % (newpass, username)
cursor.execute(sqlupdate)
conn.commit()
query = "SELECT * FROM webviews.users where username = '%s';" % username
cursor.execute(query)
result = cursor.fetchone()
# result=cursor.fetchall()
print(result)
cursor.close()
conn.close()
return result
if __name__ == '__main__':
change('test123', 'b@jj@v!789')