精华内容
下载资源
问答
  • python数据库
    千次阅读
    2022-01-13 15:49:55

    第一步:

    PyMySQL 安装:

    pip3 install PyMySQL

    第二步:

    导入Python库:

    import pymysql

    第三步:

    创建数据库连接对象:host默认一般是localhost,用户名和密码是自己创建数据库时所设定的,database为数据库名称

    db = pymysql.connect(host='localhost',
                         user='root',
                         password='123456',
                         database='DB')

    第四步:

    创建表:

    # 创建游标对象 cursor
    cur = db.cursor()
     
    # 是否该表已经存在,若存在则删除
    cursor.execute("DROP TABLE IF EXISTS STUDENT")
     
    # 创建表的SQL语句(不唯一)
    sql = "CREATE TABLE STUDENT(NAME CHAR(20) NOT NULL,AGE INT,SEX CHAR(1),ID CHAR(20))"
     
    cursor.execute(sql)

    第五步:

    操作数据库

     1.   插入:

    # 插入的SQL语句(不唯一)
    sql = "INSERT INTO STUDENT(NAME,AGE, SEX, ID)VALUES ('ZYS', 20, 男,666666666)"
    #try语句防止连接数据库时发生错误
    try:
       # 执行sql语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
        print("数据插入成功")
    except:
       # 如果发生错误则回滚
       db.rollback()
       print("数据插入失败")

      2.查询:

    # 插入SQL语句(不唯一,此处为只查询名字为ZYS的数据)
    sql = "SELECT * FROM STUDENT WHERE NAME='ZYS'" 
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 获取所有记录列表
       results = cursor.fetchall()
       for row in results:#遍历查询结果
          name = row[0]
          age = row[1]
          sex = row[2]
          id = row[3]
          
           # 打印结果
          print ("name:%s,age:%d,sex:%s,id:%s" % (name,age,sex,id))
    except:
        #若查询失败
       print ("查询失败")

     3.更新:

    # 更新的SQL语句(不唯一)
    sql = "UPDATE STUDENT SET AGE = 20 WHERE SEX = '%s'" % ('女')
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
       print("数据更新成功")
    except:
       # 发生错误时回滚
       db.rollback()
       print("数据更新失败")

    4. 删除:

    # 删除的SQL语句(不唯一)
    sql = "DELETE FROM STUDENT WHERE NAME='ZYS'"
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交修改
       db.commit()
       print("数据删除成功")
    except:
       # 发生错误时回滚
       db.rollback()
       print("数据删除失败")

     至此,Python对数据库的基本操作

    更多相关内容
  • 1、对比两个数据库的表结构差异 2、对比两个数据库的表字段差异 3、可全部导出或者选择其中一种比较方式
  • python数据库

    2021-06-17 09:25:11
    本节为python数据库,主要讲解python中数据库的相关知识。
  • Python数据库操作函数

    2022-04-23 10:25:35
    Python数据库操作函数,直接将数据库操作封装为函数,可直接调用。
  • python 数据库连接池

    千次阅读 2022-02-22 14:41:30
    python 数据库连接池 因为数据库的连接和关闭比较消耗资源,所以通常创建一个连接池,需要就获取,用完则放回连接池 主要有两个模块PooledDB和PersistentDB 1、PooledDB和PersistentDB的使用场景 1-1 PersistentDB...

    python 数据库连接池

    因为数据库的连接和关闭比较消耗资源,所以通常创建一个连接池,需要就获取,用完则放回连接池

    主要有两个模块PooledDBPersistentDB

    1、PooledDBPersistentDB的使用场景

    1-1 PersistentDB

    1、此模块好处是能保证线程安全为每一个线程建立一个连接,所以线程之间的链接是不共享的。
    每个线程每次获取都是同一个链接,当线程完成或杀死的时候,链接就关闭了。
    2、有稳定个数的线程用PersistentDB
    3、使用多线程时没有返回所有的数据【太水不知道为什么】

    在这里插入图片描述

    1-2 PooledDB

    1、当有一个线程想获取一个链接时
    ①如果要求非共享链接,直接拿出一个空闲链接返回
    ②如果要求是共享链接,【参数maxshared】限制共享链接的总个数,如果到达maxshared的上限,就等待/报错【参数blocking --true:则等待 --False(默认):报错】
    2、经常开关线程用PooledDB
    3、使用多线程时返回所有的数据

    在这里插入图片描述

    **2、数据库封装 **

    因为我执行希望能使其为一个事务,所以这样写

    mysqlutility.py

    from loguru import logger
    import pymysql
    
    from dbutils.persistent_db import PersistentDB
    from dbutils.pooled_db import PooledDB
    
    TEXT_DB = {"host": "127.0.0.1", "port": 3306, "user": "leslie", "password": "cheung",
               "database": "test", "cursorclass": pymysql.cursors.DictCursor}
    
    
    class MysqlUtility:
        __pool = None
    
        def __init__(self, mincached=10, maxcached=20, maxshared=10, maxconnections=200, blocking=True,
                     maxusage=100, setsession=None, reset=True, data_info=None):
            """
    
            :param mincached:连接池中空闲连接的初始数量
            :param maxcached:连接池中空闲连接的最大数量
            :param maxshared:共享连接的最大数量
            :param maxconnections:创建连接池的最大数量
            :param blocking:超过最大连接数量时候的表现,为True等待连接数量下降,为false直接报错处理
            :param maxusage:单个连接的最大重复使用次数
            :param setsession:optional list of SQL commands that may serve to prepare
                the session, e.g. ["set datestyle to ...", "set time zone ..."]
            :param reset:how connections should be reset when returned to the pool
                (False or None to rollback transcations started with begin(),
                True to always issue a rollback for safety's sake)
            """
            if not self.__pool:
                self.data_info = data_info if data_info else TEXT_DB
                # self.__class__.__pool = PooledDB(creator=pymysql,  **self.data_info)
                self.__class__.__pool = PersistentDB(creator=pymysql, **self.data_info)
    
        def get_conn(self):
            conn = self.__pool.connection()  # 从连接池获取一个链接
            cursor = conn.cursor()
            return conn, cursor
    
        @staticmethod
        def select(sql, cursor):
            try:
                cursor.execute(sql)
                # data = cursor.fetchall()
                data = cursor.fetchone()
                return data
            except Exception as e:
                logger.exception(f"执行select语句异常:{e}")
    
        def execute(self, sql, cursor):
            return self._execute_db(sql=sql, cursor=cursor, execute_type=1)
    
        def executemany(self, sql, cursor):
            return self._execute_db(sql=sql, cursor=cursor, execute_type=2)
    
        @staticmethod
        def _execute_db(sql, cursor, execute_type, data=None):
            func = None
            try:
                if execute_type == 1:
                    func = "execute"
                    rows = cursor.execute(sql)
                elif execute_type == 2:
                    func = "executemany"
                    rows = cursor.executemany(sql, data)
                else:
                    raise ValueError(f"没有类型为{execute_type}的执行方法")
                return rows
            except Exception as e:
                logger.exception(f"执行{func}语句异常:{e}")
    
        @staticmethod
        def commit(conn):
            conn.commit()
    
        @staticmethod
        def close(conn, cursor):
            cursor.close()
            conn.close()
    
        @staticmethod
        def rollback(conn):
            conn.rollback()
    
    
    mysql_utility = MysqlUtility()
    
    

    调用

    import threading
    
    from mysqlutility import mysql_utility
    
    
    def handle(i):
        sql = "SELECT * FROM base_info"
        conn, cursor = mysql_utility.get_conn()
        data = mysql_utility.select(sql=sql, cursor=cursor)
        print(f"num:{i} 数据:{data}")
    
    def transaction(s_id):
        conn, cursor = mysql_utility.get_conn()
        try:
            ## 如果语句中某个字段是字符串,那么根据它查找时要带引号
            del_sql = f"delete from base_info where id = '{s_id}'"
            save_key = '(name, age)'
            insert_val = [('张国荣', 55), ('林正英', 69)]
            inser_sql = f"insert into base_info {save_key} values {insert_val}"
            mysql_utility.execute(sql=del_sql, cursor=cursor)
            mysql_utility.executemany(sql=inser_sql, cursor=cursor, data=insert_val)
        except Exception as e:
            logger.error(f"执行事务异常:{e}")
            mysql_utility.rollback(conn=conn)
        finally:
            mysql_utility.commit(conn=conn)
            mysql_utility.close(conn=conn, cursor=cursor)
            
    
    if __name__ == '__main__':
        # tasks = []
        # for i in range(8):
        #     t = threading.Thread(target=handle, args=(i,))
        #     tasks.append(t)
        # for t in tasks:
        #     t.start()
        # for t in tasks:
        #     t.join()
    
        s_id = "1212"
        transaction(s_id=s_id)
    
    展开全文
  • 1)介绍和安装 Python 及 ODBC 模块 pypyodbc; 2)创建一个 Access 数据库,并在此数据库中建立相应的销售记录表; 3)向销售记录表中插入记录,记载...4)用 Python 查询数据库中的数据,并压缩 Access 数据库文件。
  • Python中操作Mysql数据库的配置方法及最基本的数据库操作演示代码
  • python链接MySQL数据库。删除,插入,更新等操作
  • 主要介绍了Python数据库小程序源代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python 数据库之更新数据

    千次阅读 2021-11-28 22:34:20
    Python 数据库之更新数据

    执行 SQL 的更新(update)子句可以修改表的记录。例如:

    import sqlite3 
    db_filename = 'company.db' 
    with sqlite3.connect(db_filename) as conn: 
        cursor = conn.cursor()
        #更新 name= 'Wang wei'记录
        cursor.execute(""" 
            update Employee set date='2016-01-02' 
            where name = 'Wang wei' 
            """) 
     
        conn.commit() #提交修改到数据库中 
     
        cursor.execute(""" 
            select id, name, date, salary from Employee 
            order by date 
            """)
        print('\nNext 5 employees:')
        for row in cursor.fetchmany(5): 
            Employee_id, name, date, salary = row 
            print('{:2d} {:<25} ({}) [{:<8}]'.format(Employee_id, name, date, salary)) 
    

    输出:

    Next 5 employees: 
     2 Zhang ping (2008-01-05) [7000.5 ] 
     1 Wang wei (2016-01-02) [8000.5 ] 
     3 Zhao qiang (2018-11-05) [6000.5 ]
    
    展开全文
  • python操作mysql数据库底层驱动
  • 一个用python语言实现的数据库管理实例,里面有各种语句用法的解释及注释
  • python实现文件下载, 连接数据库,读取文件
  • 使用python语言链接MySQL数据库
  • Python数据库操作【一】—— Sqlite

    千次阅读 2022-02-22 14:14:27
    Python数据库操作之Sqlite

    Sqlite简介

    以下摘自百度百科

           SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2021年已经接近有21个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

    python中内置Sqlite3,故无需安装第三方库,直接使用即可。

    本文代码已上传至GitHub,项目地址如下:

    https://github.com/XMNHCAS/SqlitePythonDemo

    建库建表

    在测试文件夹中创建CreateDatabase.py,导入sqlite3,然后创建一个sqlite数据库,并创建一张User表。

    import sqlite3
    
    # 若无该数据库,则创建Sqlite数据库并打开
    # 若有,则直接打开数据库
    conn = sqlite3.connect('test.db')
    
    # 获取该数据库的游标
    cursor = conn.cursor()
    
    # 执行一条SQL语句,创建user表:
    cursor.execute('CREATE TABLE User (ID INTEGER Primary KEY, Name TEXT, Age INTEGER)')
    
    # 关闭Cursor:
    cursor.close()
    
    # 提交事务:
    conn.commit()
    
    # 关闭Connection:
    conn.close()
    

    运行后则会在create.py所在的目录下生成一个test.db的文件,该文件即为sqlite数据库文件,若需要连接其他位置的sqlite数据库,则在connect 填入对应的数据库文件路径即可。

    使用navicat打开test.db,可以看到我们已经成功创建User表。


    增删改查(CRUD)

    新增记录(Create)

    直接使用游标执行insert语句,可以获取到影响的行数。

    import sqlite3
    
    
    # 打开数据库
    conn = sqlite3.connect('test.db')
    
    # 获取该数据库的游标
    cursor = conn.cursor()
    
    # 执行单条数据插入,并返回操作行数
    singleInsert = cursor.execute("INSERT INTO User (Name, Age) VALUES ('张三', 18)")
    print(f"插入了{singleInsert.rowcount}条数据")
    
    # 执行批量插入,并返回操作行数
    sql = "INSERT INTO User (Name, Age) VALUES (?, ?)"
    batchInsert = cursor.executemany(sql, [('李四', 19), ('王五', 22)])
    print(f"批量插入了{batchInsert.rowcount}条数据")
    
    # 关闭Cursor:
    cursor.close()
    
    # 提交事务:
    conn.commit()
    
    # 关闭Connection:
    conn.close()
    

    运行结果:

    使用navicat查询可以看到数据已经成功插入:

    检索记录(Retrieve)

    检索记录分三种模式,第一种是直接获取全部数据,第二种是获取前N条数据,第三种是移动游标,一条一条地获取数据。

    import sqlite3
    
    # 打开数据库
    conn = sqlite3.connect('test.db')
    
    # 获取该数据库的游标
    cursor = conn.cursor()
    
    # 获取全部记录
    cursor.execute("SELECT * FROM User")
    allData = cursor.fetchall()
    print("直接获取全部记录:")
    for item in allData:
        print(item)
    
    # 获取前N条记录
    cursor.execute("SELECT * FROM User")
    manyData = cursor.fetchmany(2)
    print("获取部分结果:")
    for item in manyData:
        print(item)
    
    # 一次读取一条结果,循环获取所有记录
    cursor.execute("SELECT * FROM User")
    print("一次读取一条结果,循环获取所有记录:")
    while True:
        singleData = cursor.fetchone()
        if singleData is None:
            break
        print(singleData)
    
    # 关闭Cursor:
    cursor.close()
    
    # 提交事务:
    conn.commit()
    
    # 关闭Connection:
    conn.close()
    

    运行结果如下:

    更新记录(Update)

    可以仅修改单条记录,也可以修改多条记录。

    import sqlite3
    
    
    # 打开数据库
    conn = sqlite3.connect('test.db')
    
    # 获取该数据库的游标
    cursor = conn.cursor()
    
    cursor.execute("SELECT * FROM User")
    print("修改前的数据:")
    print(cursor.fetchall())
    
    # 执行单条数据修改,并返回操作行数
    singleUpdate = cursor.execute("UPDATE User SET Age = 20 WHERE Name = '张三'")
    print(f"修改了{singleUpdate.rowcount}条数据")
    
    cursor.execute("SELECT * FROM User")
    print("修改单条数据后的数据:")
    print(cursor.fetchall())
    
    # 执行批量修改,并返回操作行数
    sql = "UPDATE User SET Age = ? WHERE Name = ?"
    batchUpdate = cursor.executemany(sql, [(25, '李四'), (35, '王五')])
    print(f"批量修改了{batchUpdate.rowcount}条数据")
    
    cursor.execute("SELECT * FROM User")
    print("批量修改后的的数据:")
    print(cursor.fetchall())
    
    # 关闭Cursor:
    cursor.close()
    
    # 提交事务:
    conn.commit()
    
    # 关闭Connection:
    conn.close()
    

    运行结果如下:

    删除数据(Delete)

    同样支持删除单条数据或者批量删除数据。

    import sqlite3
    
    
    # 打开数据库
    conn = sqlite3.connect('test.db')
    
    # 获取该数据库的游标
    cursor = conn.cursor()
    
    cursor.execute("SELECT * FROM User")
    print("删除前的数据:")
    print(cursor.fetchall())
    
    # 执行单条数据修改,并返回操作行数
    singleDelete = cursor.execute("DELETE FROM User WHERE ID = 1")
    print(f"删除了{singleDelete.rowcount}条数据")
    
    cursor.execute("SELECT * FROM User")
    print("删除单条数据后的数据:")
    print(cursor.fetchall())
    
    # 执行批量删除,并返回操作行数
    sql = "DELETE FROM User WHERE ID = ?"
    batchDelete = cursor.executemany(sql, [('2'), ('3')])
    print(f"批量删除了{batchDelete.rowcount}条数据")
    
    cursor.execute("SELECT * FROM User")
    print("批量删除后的的数据:")
    print(cursor.fetchall())
    
    # 关闭Cursor:
    cursor.close()
    
    # 提交事务:
    conn.commit()
    
    # 关闭Connection:
    conn.close()
    

    运行结果如下:

    展开全文
  • Python数据库编程练习 ※

    千次阅读 2021-12-23 18:11:19
    本关任务:编写一个 python 程序完成数据库建表操作。 import pymysql if __name__ == '__main__': # **********begin********** # coon=pymysql.connect(host='localhost',port=3306,user='root',passwd='123123'...
  • PyThon连接MySql数据库,并进行增删改查,亲测可用
  • python数据库操作——数据库使用概述   hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。 数据库使用概述python数据库操作——数据库使用概述1. 数据库基础知识2. 访问数据库基本...
  • Python数据库编程之pymysql详解

    千次阅读 2022-05-10 22:47:32
    文章目录前言一、pymsql的安装二、连接数据库三、创建和管理数据库四、创建和管理表 前言 学习之前务必安装MySQL并已启动相关服务,MySQL安装方法及查看初始密码见文章第一部分: ... 一、pymsql的安装 ...
  • Python数据库操作【三】—— SQLServer

    千次阅读 2022-03-11 10:48:47
    Python数据库操作之Microsoft SQL Server
  • python连接mysql数据库代码。必须先下载安装mysql数据库,并启动数据库
  • Python实现数据库编程
  • Python数据库高效导出到csv文件

    千次阅读 2021-11-28 10:43:22
    数据库导出到csv文件 数据库StudentTest中的信息导出到csvdata.csv文件中 import pymysql # 连接 StudentTest数据库 config = {'host': 'localhost', 'port': 3306, 'user': 'root', 'passwd': '1414141', 'db' : '...
  • Python数据库操作之ORM框架

    千次阅读 2021-03-21 15:56:03
    基本的操作数据库是Mysql官方的MySQL-connector驱动,来完成数据库的连接和使用,但当项目规模增加时,代码会越来越复杂。效率比较高的是基于ORM来操作Mysql。 ORM(Object Relation Mapping),中文意思是对象关系...
  • 本课程是一个串讲课。当您学会了Python,并且了解了MySQL数据库以后,我们就可以使用Python去操作他们了,一个纯Python的MySQL客户端,通过它我们可以很容易的通过python代码进行MySQL的数据增删改查操作。
  • Python数据库sqlite3详解

    千次阅读 多人点赞 2022-06-25 18:59:54
    本文介绍了 SQLite3 数据库的详细使用方法
  • python数据库操作——连接Oracle

    千次阅读 2021-08-22 21:55:17
    python数据库操作——连接Oracle   hello!我是wakeyo_J,每天一个konwledge point,一起学python,让技术无限发散。 连接Oraclepython数据库操作——连接Oracle1. 安装Oracle数据库2. 安装cx_Oracle驱动程序3. ...
  • 操作数据库是与python关联很密切的。 今天详细讲解一下怎么连接数据库,pymysql中的 import pymysql #第一步:连接到mysql数据库 conn = pymysql.connect(host='localhost',user='root',password='root',db='...
  • 主要介绍了Python 数据库的Connection、Cursor两大对象,文中通过python 数据库图解给大家介绍的非常详细,需要的朋友参考下吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 688,851
精华内容 275,540
关键字:

python数据库

友情链接: OdbcExcel.rar