Python数据库编程

数据库编程

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

#!/usr/bin/python
-*- coding: UTF-8 -*-

import MySQLdb

打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

使用cursor()方法获取操作游标
cursor = db.cursor()

使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")

使用 fetchone() 方法获取一条数据
data = cursor.fetchone()

print "Database version : %s " % data

关闭数据库连接
db.close()
#!/usr/bin/python
-*- coding: UTF-8 -*-

import MySQLdb

打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

使用cursor()方法获取操作游标
cursor = db.cursor()

如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

创建数据表SQL语句
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

关闭数据库连接
db.close()

#!/usr/bin/python
-*- coding: UTF-8 -*-

import MySQLdb

打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

使用cursor()方法获取操作游标
cursor = db.cursor()

SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

关闭数据库连接
db.close()

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
fetchall():接收全部的返回结果行.

rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

#!/usr/bin/python
-*- coding: UTF-8 -*-

import MySQLdb

打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

使用cursor()方法获取操作游标
cursor = db.cursor()

SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()

关闭数据库连接
db.close()
#!/usr/bin/python
-*- coding: UTF-8 -*-

import MySQLdb

打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

使用cursor()方法获取操作游标
cursor = db.cursor()

SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交修改
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()

关闭连接
db.close()

SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 向数据库提交
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()
连接
- 直接连接:
    import redis
    r = redis.Redis(host='10.211.55.4', port=6379)
    r.set('foo', 'Bar')    # 这里的方法与Redis命令类似
    print r.get('foo')
- 连接池:
    import redis
    pool = redis.ConnectionPool(host='10.211.55.4', port=6379)
    r = redis.Redis(connection_pool=pool)
    r.set('foo', 'Bar')
    print r.get('foo')

     def list_iter(key, count=3):
            start = 0
            while True:
                result = conn.lrange(key, start, start+count-1)
                start += count
                if not result:
                    break
                for item in result:
                    yield item
    # 调用
        for val in list_iter('num_list'):
            print(val)

一致性hash算法(DHT)可以通过减少影响范围的方式,解决增减服务器导致的数据散列问题,从而解决了分布式环境下负载均衡问题;
如果存在热点数据,可以通过增添节点的方式,对热点区间进行划分,将压力分配至其他服务器,重新达到负载均衡的状态。

Python模块–hash_ring,即Python中的一致性hash。

Original: https://www.cnblogs.com/sunlincode/p/16742546.html
Author: 小孙不是程序员
Title: Python数据库编程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/579602/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 面向对象设计与构造2022第四单元总结

    一、总结本单元作业的架构设计 ​ 这里展示一下第三次作业的类图,相当于整个单元的架构设计。 ​ 首先,通过第四单元手册的学习,我们可以得知UML类图、顺序图和状态图每一种图它的元素…

    Java 2023年6月10日
    082
  • 原来你是这样的JAVA[06]-反射

    1.JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息;获取一个class对应的Class实例后,就可以获取该…

    Java 2023年5月29日
    053
  • 设计模式 16 命令模式

    命令模式(Command Pattern)属于 行为型模式 概述 现在各大电子厂商都在推智能家居,即可以通过手机这一个终端控制多个家用电器,比之前的单个设备智能由对应遥控器控制的方…

    Java 2023年6月6日
    078
  • 部署jar包windows服务工具

    背景 某个周末一个线上项目因为服务器自动重启导致了系统挂了,我们是通过jenkins部署的jar包所以需要手动重启项目,解决问题后准备调换部署方式让项目随系统自动启动,试用tomc…

    Java 2023年6月15日
    095
  • aardio + VBScript 混合开发

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月16日
    073
  • MySQL事务隔离级别锁相关的详解

    MySQL InnoDB引擎中的事务详解! 事务就是可以使一组操作要么全部成功要么全部失败,事务的目的是为了 保证数据的最终一致性。 举个例子: 张三给李四的微信转了1000块红包…

    Java 2023年6月8日
    0144
  • 碎碎念六二

    07.01 心,完全沉静下来,阅读与创作,便是快乐的开始。 心静下来,做什么事情都会快乐的吧! 又是什么,让心静不下来呢?忧疑与恐惧,名利与渴望。 07.03 小心保存情感,蓄积,…

    Java 2023年6月9日
    073
  • 安装各类软件时弹出windows installer的无法访问您试图使用的功能所在的CD-ROM或者移动硬盘提示的问题的解决

    首先声明一下:这个问题太**坑爹了,网上的那些各类方法,什么修改注册表了,修改组策略了,都不管用,说一下具体要怎么解决。 1.问题附图,我已经解决了,从网上找的一个一样的图,就是下…

    Java 2023年6月9日
    0168
  • 新一代分布式实时流处理引擎Flink入门实战之先导理论篇-上

    @ 概述 定义 为什么使用Flink 应用行业和场景 应用行业 应用场景 实时数仓演变 Flink VS Spark 架构 系统架构 术语 无界和有界数据 流式分析基础 分层API…

    Java 2023年6月5日
    093
  • Spring事件执行流程源码分析

    1. 背景 为啥突然想到写这个?起因就是看到了Nacos的 #3757 ISSUE,理解错误, 以为是服务启动,没有注册上服务,实际namespace不同,导致服务无法注册。 但这…

    Java 2023年6月15日
    060
  • SpringCloud + MyBatis Plus + Druid + dynamic-datasource 多数据源配置

    SpringCloud:Greenwich.SR2 Spring-boot : 2.1.7.RELEASE Spring:5.1.9.RELEASE 如果没有设置上文红色部分配置,…

    Java 2023年5月30日
    067
  • Java线程池中线程的状态简介

    首先明确一下线程在JVM中的各个状态(JavaCore文件中) 1.死锁,Deadlock(重点关注) 2.执行中,Runnable(重点关注) 3.等待资源,Waiting on…

    Java 2023年6月15日
    076
  • mybatis 新增返回主键

    java;gutter:true; insert into t_ob_recycle_record (belong_project,task_name,recycle_time,r…

    Java 2023年5月30日
    074
  • 面试手撕并发算法题

    固定打印顺序 使用 wait-notify 实现以下功能:先打印 b,再打印 a 线程t1和t2同时运行,t1中打印 a,t2中打印 b,但 t1 打印得有个前提,就是 t1要在t…

    Java 2023年6月15日
    074
  • Linux centos7.6 安装 docker

    1、安装官网教程 https://docs.docker.com/engine/install/centos/ 2、卸载之前的 docker sudo yum remove doc…

    Java 2023年6月5日
    084
  • 如果你还没玩过Docker Stack管理服务,你已经out了,(送Portainer集群管理教程)

    我们上面使用 swarm部署服务,单个服务还好,如果很多个服务怎么来解决呢,这里就用到了 Docker Stack管理服务。 ​ 在上面我们学会了如何配置一个swarm集群,并且知…

    Java 2023年6月15日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球