首页 > 数据库 >Python数据库编程

Python数据库编程

时间:2022-09-29 18:25:03浏览次数:96  
标签:execute Python 数据库 编程 db cursor MySQLdb sql

数据库编程

1.什么是MySQLdb?

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

2.如何连接数据库?

#!/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()

3.如何创建数据库表?

#!/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()

4.如何执行数据插入?

#!/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()

5.如何执行数据库查询操作?

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

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
fetchall():接收全部的返回结果行.
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

6.如何更新数据库数据?

#!/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()

7.如何删除数据库数据?

#!/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()

8.如何使用数据库事务?

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

9.python如何操作redis?

连接
- 直接连接:
    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')

10.如果redis中的某个列表中的数据量非常大,如何实现循环显示每一个值?

     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)

11.什么是一致性哈希?Python中是否有相应模块?

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

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

参考资料

https://www.runoob.com/python/python-mysql.html

https://www.cnblogs.com/wcwnina/p/10304641.html

标签:execute,Python,数据库,编程,db,cursor,MySQLdb,sql
From: https://www.cnblogs.com/sunlincode/p/16742546.html

相关文章

  • Python常用类库
    1.什么是时间元组?2.使用datetime获取今天日期及前N天日期3.获取以秒为单位的浮点时间time():4.获取人可以直观理解的时间ctime():5.浮点时间转化为直观时间:6.获取格......
  • PythonWeb开发
    1.什么是Flask?有什么优点?2.Django和Flask有什么区别?3.Flask-WTF是什么,有什么特点?4.Flask脚本的常用方式是什么?5.如何在Flask中访问会话?6.解释PythonFlask中的数据......
  • 网络编程-IP地址的分类
    网络编程-IP地址的分类网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这个用于区分的标识这就是IP地址;IP地址由4个数字组成,形如“192.168.1.1”。(其实是4个字......
  • 网络编程-TCP 建立连接 与 终止连接
    网络编程-TCP建立连接与终止连接建立TCP连接TCP是因特网中的传输层协议,使用三次握手协议建立连接。当客户端发出SYN连接请求后,等待服务器端回答SYN+ACK,并最终对服......
  • 网络编程-Java输入输出流
    网络编程-Java输入输出流流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的......
  • 【python】nc数据集转tif时栅格错位的解决办法
    nc转tif在数据处理中也是老生常谈了,网上也有很多代码。我之前转换的时候也是挺顺利的,但是今天在处理数据的时候发现转出的tif和原nc数据存在错位现象,如下图所示: ......
  • Python实验报告(第五周)
    实验5:Python字符串及正则表达式一、实验目的和要求学会使用字符串的常用操作方法和正确应用正则表达式。二、实验环境软件版本:Python3.1064_bit三、实验过程1、实......
  • python人工智能项目实战,PDF+源码
    机器学习AI算法工程 公众号:datayx《python人工智能项目IntelligentProjectsUsingPython》实施机器学习和深度学习方法,使用Python构建智能,认知AI项目主要特点帮助您掌......
  • 用 Python 翻译音频
    用Python翻译音频FrançoiseGilot,TheTelephoneCall,1952我被要求开始转录一些工作中的电话。有些电话很短,有些可能长达一个小时。有些也有更多的背景噪音,也听......
  • Python 环境管理
    Python环境管理Python版本、虚拟环境、依赖、包管理曾几何时,开发人员的笔记本电脑上只有一个Python版本和一个Python环境,一切运行良好。直到有一天,您需要处理多个项......