操作MySQL

1)Windows中安装python和pycharm
2)ubuntu中安装python和pycharm

安装步骤不做赘述,pycharm运行脚本

#!/usr/bin/env python
import MySQLdb
#get connection
try:con = MySQLdb.connect(host='localhost',user='root',passwd='12346',port=3308,db='sakila',charset='utf8')
except MySQLdb.Error as e:print('error:%s'% e)
cursor = con.cursor()
cursor.execute('SELECT * FROM `store`')
rest = cursor.fetchone()
print(rest)
#close connection
con.close()

3)查询数据库

#!/usr/bin/env python
import MySQLdb
class MysqlQuery(object):def __init__(self):self.get_conn()def get_conn(self):# get connectiontry:self.conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',port=3308,db='sakila',charset='utf8')except MySQLdb.Error as e:print('error:%s' % e)cursor = self.conn.cursor()cursor.execute('SELECT * FROM `store`')rest = cursor.fetchone()print(rest)def close_conn(self):try:if self.conn:# close connectionself.conn.close()except MySQLdb.Error as e:print('Error:%s'%e)def get_one(self):#prepare SQL/*虽然定义类型为int,可使用string*/sql='SELECT * FROM `store` where `store_id` =%s'#get cursorcursor=self.conn.cursor()cursor.execute(sql,('1',))print(cursor.rowcount)rest=dict(zip([k[0] for k in cursor.description],cursor.fetchone()))print(rest)print(rest['store_id'])self.close_conn()return rest
def main():obj = MysqlQuery()rest = obj.get_one();print(rest['store_id'])if __name__ == '__main__':main()/*取走所有数据,形成数组*/
rest = [dict(zip([k[0] for k in cursor.description],row))for row in cursor.fetchall()]

zip([iterable, …])
Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。

dict()作用:dict() 函数用于创建一个字典。返回一个字典。

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
/*kwargs -- 关键字mapping -- 元素的容器。iterable -- 可迭代对象
*/

4)更新数据

 def add_one(self):row_count=0try:sql = ("insert into `film`(`title`,`description`,`language_id`) value" "(%s,%s,%s);")cursor = self.conn.cursor()cursor.execute(sql, ('chia', 'ashajhsjah','1'))self.conn.commit()except:print('error')self.conn.rollback()row_count=cursor.rowcountcursor.close()self.close_conn()return row_count

5)ORM:SQLAlChemy

 pip install SQLAlchemyimport sqlalchemy

declarative_base() 创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联。
增删改查

#!/usr/bin/python
#coding=utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, Integer, String, DateTime, Boolean
import  datetime
#engine=create_engine('数据库类型://用户名:密码@ip:端口/数据库名')
engine=create_engine('mysql://root:123456@localhost:3308/sakila')
Base=declarative_base()
Session = sessionmaker(bind=engine)
class Store(Base):__tablename__='country'#数据库表名country_id = Column(Integer, primary_key=True)country = Column(String(200), nullable=False)last_update = Column(String(2000), nullable=False)
class MysqlOrmTest(object):def __init__(self):self.session=Session()def add_one(self):new_obj=Store(country_id='130',country='hhhsahsa',last_update=datetime.datetime.now()#此处需要import datetime)self.session.add(new_obj)self.session.commit()return new_objdef get_one(self):return self.session.query(Store).get(1)def update_date(self):obj=self.session.query(Store).get(1)obj.manager_staff_id=1self.session.add(obj)self.session.commit()return objdef delete_data(self):data=self.session.query(Store).get(3)self.session.delete(data)self.session.commit()
def main():# rest = obj.add_one()# print(dir(rest))# print(obj.get_one().title)# print(obj.get_more().count())# for row in obj.get_more():#     print(row.title)# print(obj.update_data())if __name__ == '__main__':main()

6)项目实战

使用pycharm专业版,选择flask框架,代码如下:

from flask import Flask
app = Flask(__name__)
@app.route('/hello')
def hello_world():return 'Hello World!hello'
if __name__ == '__main__':app.run(debug=True)
##flask支持热部署

简单搭建flask架构网站
本人使用pycharm开发flask项目,可以利用工具导入工具包:

##引入相关包
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, render_template, flash, redirect, url_for, abort, requestapp = Flask(__name__)
##配置数据库
app.config['SQLALCHEMY_DATABASE_URI']  = 'mysql://root:123456@localhost:3308/flaskdb'
db=SQLAlchemy(app)
##完成ORM映射
class News(db.Model):__tablename__='news'id = db.Column(db.Integer, primary_key=True)title = db.Column(db.String(200), nullable=False)img_url = db.Column(db.String(2000), nullable=False)content = db.Column(db.String(2000), nullable=True)is_valid = db.Column(db.String(2000), nullable=True)created_at = db.Column(db.String(2000), nullable=True)updated_at = db.Column(db.String(2000), nullable=True)news_type = db.Column(db.String(2000), nullable=True)def __repr__(self):return '<News %r>' % self.title
##python生成HTML效果不好
@app.route('/hello')
def hello_world():return 'Hello World!hello'
##使用渲染引擎Jinja2
@app.route('/')
def index():news_list=News.query.all()return render_template("index.html",news_list=news_list)@app.route('/cat/<name>/')
def cat(name):news_list=News.query.filter(News.news_type==name)return render_template('cat.html',new_list=news_list)@app.route('/detail/<int:pk>/')
def detail(pk):new_obj=News.query.get(pk)return render_template('detail.html',new_obj=new_obj)@app.route('/admin/')
@app.route('/admin/<int:page>/')
def admin(page=None):return render_template("admin/index.html")@app.route('/admin/add/', methods=['GET', 'POST'])
def add():return render_template("admin/add.html")@app.route('/admin/update/<int:pk>/', methods=['GET', 'POST'])
def update(pk):return render_template("admin/update.html")@app.route('/admin/delete/<int:pk>/', methods=['POST'])
def delete(pk):return 'no'if __name__ == '__main__':app.run(debug=True)

操作Redis

1) Redis安装

sudo apt-get update
sudo apt-get install redis-server##启动Redis服务器
redis-server##查看 redis 是否启动?
redis-cli

2)Redis命令

Set animal 'cat'
get animal##添加value
append animal 'dog'mset user1 'chu' user2 'yao'
mget user1 user2set num 9incr/decr num /*增加减少1*/set user:chuyao;age:45 'asasasasa'

列表(list)相关操作

lpush/rpush q1 'chu' 'yao' 'Amy'/*从左、右插入数据*/
lrange/*获取指定长度的数据*/
ltrim/*截取一定长度的数据*/
lpop/rpop/*移除最左、右的元素并返回*/
lpushx/rpushx --key/* key存在时候才插入数据,不存在时不做任何处理*/

集合(Set)相关操作

sadd/srem /*添加、删除元素*/
sismember /*判断是否为set的一个元素*/
smembers /*返回该集合的所有成员*/
sdiff /*返回一个集合与其他集合的差异*/
sinter/*返回几个集合的交集*/
sunion/*返回几个集合的并集*/

散列(hash)相关操作

3)redis-py连接

import redis
r=redis.StrictRedis(host='120.95.132.174',port=6379,db=0)
user1=r.get('user1')
print(user1)

注意,如果是远程连接数据库,需要修改Redis配置文件。
1)注释掉bind 127.0.0.1可以使所有的ip访问redis。
2)修改办法:protected-mode no

4)Python 操作String类型

import redisclass TestString(object):def __init__(self):self.r=redis.StrictRedis(host='120.95.132.174',port=6379,db=0)def test_set(self):rest=self.r.set('user2','Amy');print(rest)def test_get(self):rest=self.r.get('user1')print restreturn restdef test_mset(self):d={'user3':'Bob','user4':'BobX'}rest=self.r.mset(d)print(rest)return restdef test_mget(self):l=['user1','user2']rest=self.r.mget(l)print(rest)return restdef test_del(self):rest=self.r.delete('user1')print (rest)
def main():str_obj=TestString();# str_obj.test_set();str_obj.test_get();# str_obj.test_mset();# str_obj.test_mget();# str_obj.test_del();
if __name__=='__main__':main()

5)项目实战

新闻数据,Hash
新闻ID,String
分页数据,List
排序,Sorted Set

Python操作主流数据库相关推荐

  1. Python操作常用数据库

    Python操作常用数据库 前言 简介 SQLite 连接SQLite 创建数据表 增 删 改 查 MySQL mysql-connector操作MySQL 创建数据表 增 删 改 查 pymysql ...

  2. Python 操作 MongoDB 数据库!

    作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...

  3. Python操作Oracle数据库:cx_Oracle

    1 安装与导入 Python操作Oracle数据库多用cx_Oracle这个第三方扩展,总体而言,cx_Oracle的使用方式与Python操作MySQL数据库的pymysql库还是很相似的,如果还没 ...

  4. java连接mongodb_第78天: Python 操作 MongoDB 数据库介绍

    MongoDB 是一款面向文档型的 NoSQL 数据库,是一个基于分布式文件存储的开源的非关系型数据库系统,其内容是以 K/V 形式存储,结构不固定,它的字段值可以包含其他文档.数组和文档数组等.其采 ...

  5. python操作mysql数据库的常用方法使用详解

    python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...

  6. Python操作mySql数据库封装类

    这是自己在做项目过程中,整理封装的操作mysql数据库封装类,自己可以修改下使用,节省大量时间. myGlobal.py # -*- coding: utf-8 -*-global globalLis ...

  7. python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...

    # -*- coding: utf-8 -*- import pymysql import xlrd # import codecs #连接数据库 conn = pymysql.connect(hos ...

  8. python 天气预报 mysql_python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库...

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 "test-mysql". Python 操作 ...

  9. python操作mysql中的表_带你了解什么是Python操作MySQL数据库

    写这篇文章主要是为了介绍Python操作MySQL数据库,并结合相应的实例带你更加深入了解.文中的代码实例很详细,对大家有一定的参考学习价值. 1.什么是pymysql? PyMySQL是在Pytho ...

最新文章

  1. 用一个比喻说明项目里各个成员的角色
  2. openssl常用用法
  3. 15、如何在Linux和Windows下清除DNS缓存
  4. mysql导出停机_MySQL自动停机的问题处理实战记录
  5. flask mysql项目模板渲染_Flask框架模板渲染操作简单示例
  6. unity 2020 怎么写shader使其接受光照?_如何在Unity中造一个PBR Shader轮子
  7. mysql 运维常见操作
  8. HALCON 21.11:深度学习笔记---分类(10)
  9. GridView 72般绝技(一)
  10. 文件系统挂载、卸载及相关的工具 ⑨
  11. C语言课程设计:学生管理系统
  12. java将数字转为大写(1转为一)
  13. 二、Spring AOP 切面的定义
  14. 关于Windows 443端口被占用问题的解决
  15. Bip44确定性算法的Java实现库(Android和java平台都可以使用)
  16. 海贼王燃烧意志服务器维修,海贼王燃烧意志刷经验
  17. 毕业设计 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉
  18. 在html中不是链接目标属性,在HTML中,()不是链接的目标属性。A、selfB、newC、blankD、Top - 扁豆云问答...
  19. LibreOffice 宏
  20. 幼儿园介绍信(15篇)

热门文章

  1. ArrayList、LinkedList哪家强,据说90,亚信科技Java笔试题
  2. 论文python爬虫_论的解释|论的意思|汉典“论”字的基本解释
  3. Linux运维面试精选题库(一)
  4. Android逆向之路---改apk包名、达到多开效果
  5. 类似于APICloud的H5应用服务端加密客户端动态解密的增强版H5应用加固方案
  6. 十多年零工资!马斯克获得近8亿美元绩效股票期权奖励
  7. C盘里的每个文件夹都是干什么用的
  8. JNIDemo和学习笔记
  9. 罗斯蒙特超声波液位测量应用
  10. CCNA培训(五)_20210725day05