精华内容
下载资源
问答
  • python连接数据库

    万次阅读 多人点赞 2019-01-17 14:48:27
    一、python连接数据库 pyton连接数据库需要先安装pymysql模块:pip install pymysql 安装完成后导入pymysql模块:import pymysql python连接数据库主要分五个步骤: step1:连接数据库 step2:创建游标对象 ...

    一、python连接数据库
    pyton连接数据库需要先安装pymysql模块:pip install pymysql
    安装完成后导入pymysql模块:import pymysql
    python连接数据库主要分五个步骤:
    step1:连接数据库
    step2:创建游标对象
    step3:对数据库进行增删改查
    step4:关闭游标
    step5:关闭连接

    # 1. 连接数据库,
    conn = pymysql.connect(
        host='localhost',
        user='root',
        password='redhat',
        db='helloTest',
        charset='utf8',
           # autocommit=True,    # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
    )
    # ****python, 必须有一个游标对象, 用来给数据库发送sql语句, 并执行的.
    # 2. 创建游标对象,
    cur = conn.cursor()
    # 3. 对于数据库进行增删改查
    # 1). ************************创建数据表**********************************
    try:
        create_sqli = "create table hello (id int, name varchar(30));"
        cur.execute(create_sqli)
    except Exception as e:
        print("创建数据表失败:", e)
    else:
        print("创建数据表成功;")
    ## 2). *********************插入数据****************************
    try:
        insert_sqli = "insert into hello values(2, 'fensi');"
        cur.execute(insert_sqli)
    except Exception as e:
        print("插入数据失败:", e)
    else:
        # 如果是插入数据, 一定要提交数据, 不然数据库中找不到要插入的数据;
        conn.commit()
        print("插入数据成功;")
    # 3). *********************插入多条数据****************************
    try:
        info = [(i, "westos%s" %(i)) for i in range(100)]
    
        # *********************第一种方式********************
        # %s必须手动添加一个字符串, 否则就是一个变量名, 会报错.
        insert_sqli = "insert into hello values(%d, '%s');"
        for item in info:
            print('insert语句:', insert_sqli %item)
            cur.execute(insert_sqli %item)
    
         # *********************第二种方式********************
        insert_sqli = "insert into hello values(%s, %s);"
         cur.executemany(insert_sqli, info )
    except Exception as e:
        print("插入多条数据失败:", e)
    else:
        # 如果是插入数据, 一定要提交数据, 不然数据库中找不到要插入的数据;
        conn.commit()
        print("插入多条数据成功;")
    # 4). **************************数据库查询*****************************
    sqli = "select * from hello;"
    result = cur.execute(sqli)  # 默认不返回查询结果集, 返回数据记录数。
    print(result)
    print(cur.fetchone())     # 1). 获取下一个查询结果集;
    print(cur.fetchone())
    print(cur.fetchone())
    print(cur.fetchmany(4))   # 2). 获取制定个数个查询结果集;
    info = cur.fetchall()     # 3). 获取所有的查询结果
    print(info)
    print(len(info))
    print(cur.rowcount)       # 4). 返回执行sql语句影响的行数
    #  5). 移动游标指针
    print(cur.fetchmany(3))
    print("正在移动指针到最开始......")
    cur.scroll(0, 'absolute')
    print(cur.fetchmany(3))
    print("正在移动指针到倒数第2个......")
    print(cur.fetchall())    # 移动到最后
    cur.scroll(-2, mode='relative')
    print(cur.fetchall())
    # 4. 关闭游标
    cur.close()
    # 5. 关闭连接
    conn.close()
    

    操作运行结果截图:
    1.创建数据表:
    在这里插入图片描述
    2.插入数据;
    在这里插入图片描述
    3.插入多条数据(第一种方法);
    在这里插入图片描述
    3.插入多条数据(第二种方法)
    在这里插入图片描述
    4.数据库查询;
    在这里插入图片描述
    5.移动游标指针
    在这里插入图片描述
    二、获取表的字段名和信息
    首先导入所需要的模块

    import time
    import pymysql
    

    然后进入主程序部分:此部分用with语句编写(with语句实现的效果是: with语句执行结束, 如果成功, 则提交改变的数据, 如果不成功, 则回滚.)

    conn = pymysql.connect(
        host='localhost',
        user='root',
        password='redhat',
        db='helloTest',
        charset='utf8',
        # autocommit=True,    # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
    ) 	#连接数据库
    with conn:	#主程序with语句部分
        # ****** 判断是否连接? 
        print(conn.open)  # True
        # 2. 创建游标对象,
        cur = conn.cursor()
        # 3).
        sqli = "select * from hello;"
        result = cur.execute(sqli)  # 默认不返回查询结果集, 返回数据记录数。
        # 显示每列的详细信息
        des = cur.description
        print("表的描述:", des)
    	# 获取表头
        print("表头:", ",".join([item[0] for item in des]))
        cur.close() 	#关闭游标,with语句内部
     conn.close()	#关闭指针,with语句外部
    print("with语句之外:", conn.open)   # 正确情况下会是False
    

    操作运行结果;
    在这里插入图片描述

    三、基于mysql数据库银行转账功能实现
    银行转账系统考虑因素主要包括:
    1). 判断两个银行卡号是否存在?
    2). 判断source_id是否有足够的钱?
    3). source_id扣钱
    4). target_id加钱
    代码如下:

    import pymysql
    class TransferMoney(object):
        # 构造方法
        def __init__(self, conn):
            self.conn = conn
            self.cur = conn.cursor()
        def transfer(self, source_id, target_id, money):
    		if not self.check_account_avaialbe(source_id):
                raise  Exception("账户不存在")
            if not self.check_account_avaialbe(target_id):
                raise  Exception("账户不存在")
            if self.has_enough_money(source_id, money):
                try:
                    self.reduce_money(source_id, money)
                    self.add_money(target_id, money)
                except Exception as e:
                    print("转账失败:", e)
                    self.conn.rollback()
                else:
                    self.conn.commit()
                    print("%s给%s转账%s金额成功" % (source_id, target_id, money))
                    
        def check_account_avaialbe(self, acc_id):
            """判断帐号是否存在, 传递的参数是银行卡号的id"""
            select_sqli = "select * from bankData where id=%d;" % (acc_id)
            print("execute sql:", select_sqli)
            res_count = self.cur.execute(select_sqli)
            if res_count == 1:
                return True
            else:
                # raise  Exception("账户%s不存在" %(acc_id))
                return False
                
        def has_enough_money(self, acc_id, money):
            """判断acc_id账户上金额> money"""
            # 查找acc_id存储金额?
            select_sqli = "select money from bankData where id=%d;" % (acc_id)
            print("execute sql:", select_sqli)
            self.cur.execute(select_sqli)  # ((1, 500), )
            # 获取查询到的金额钱数;
            acc_money = self.cur.fetchone()[0]
            # 判断
            if acc_money >= money:
                return True
            else:
                return False
    
        def add_money(self, acc_id, money):
            update_sqli = "update bankData set money=money+%d  where id=%d" % (money, acc_id)
            print("add money:", update_sqli)
            self.cur.execute(update_sqli)
    
        def reduce_money(self, acc_id, money):
            update_sqli = "update bankData set money=money-%d  where id=%d" % (money, acc_id)
            print("reduce money:", update_sqli)
            self.cur.execute(update_sqli)
        # 析构方法
        def __del__(self):
            self.cur.close()
            self.conn.close()
            
    if __name__ == '__main__':
        # 1. 连接数据库,
        conn = pymysql.connect(
            host='localhost',
            user='root',
            password='redhat',
            db='helloTest',
            charset='utf8',
            autocommit=True,    # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。
        )
        trans = TransferMoney(conn)   
        trans.transfer(13997, 13998, 200)	#账户13997向13998转账200
    

    测试时,首先在数据库中构造数据表bankData,在数据表中添加用户信息(包括用户帐号和账户内金额)
    如下:
    在这里插入图片描述在这里插入图片描述
    运行代码后数据库内金额发生变化,由账户13997向账户13998转账200元:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • python3问题-python连接数据库

    千次阅读 2019-04-18 20:07:48
    python连接数据库 python -m pip install mysql-connector 最近写python遇到的一些问题,望给大家一点帮助。我是小王,CSDN博客:https://blog.csdn.net/cmqwan

    python连接数据库

    python -m pip install mysql-connector

    最近写python遇到的一些问题,望给大家一点帮助。我是小王,CSDN博客:https://blog.csdn.net/cmqwan

    展开全文
  • 数据库可视化+python连接数据库

    千次阅读 2020-03-27 18:29:57
    python连接数据库 1、在python或者Anaconda环境下运行以下命令: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyMySQL 使用清华源安装python连接数据库的库。 2、在navicat软件里面先进行快速创建...

    数据库可视化工具navicat

    后续补充下载资源。。。

    python连接数据库

    1、在python或者Anaconda环境下运行以下命令:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyMySQL
    

    使用清华源安装python连接数据库的库。

    2、在navicat软件里面先进行快速创建测试数据库:
    在这里插入图片描述
    步骤:连接,创建数据库,在数据库下创建表,先给表下添加字段,然后添加信息。

    3、运行python输入代码连接数据库并执行SQL命令:

    # 导入pymysql模块
    import pymysql
    # 连接database
    conn = pymysql.connect(host="localhost",user="root",passwd="xxxxxxx",database="homework",charset="utf8")
    # 得到一个可以执行SQL语句的光标对象
    cursor = conn.cursor()
    # 定义要执行的SQL语句
    sql = """
    SELECT Cno,AVG(GRADE)
    FROM SC
    GROUP BY Cno
    ORDER BY AVG(GRADE) DESC
    """
    # 执行SQL语句
    cursor.execute(sql)
    # 通过fetchall方法获得数据
    data = cursor.fetchall()
    #打印输出数据
    print(data)
    # 关闭光标对象
    cursor.close()
    # 关闭数据库连接
    conn.close()
    

    上面代码只需要连接数据库密码和SQL语句就可以看到相应的数据库操作结果啦!!

    展开全文
  • python 连接数据库执行sql 查询

    千次阅读 2017-08-30 10:22:48
    Python 连接数据库执行sql 操作

    Python 连接数据库执行sql 操作

    type_status_dict = {}
    with connections['default'].cursor() as cursor:
        cursor.execute(query, [school_id, year, semester, subject_id])
        alldata = cursor.fetchall()
        for i in alldata:
            type_status_dict[i[1]] = i[0]
    return type_status_dict

    with connection.cursor() as cursor:
        cursor.execute("SELECT cache_key FROM %s "
                       "WHERE cache_key = %%s and expires > %%s" % table,
                       [key, connection.ops.adapt_datetimefield_value(now)])
        return cursor.fetchone() is not None

    fetchone() :

    返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None

    fetchone()用法:

    cur.execute("select host,user,password from user where user='%s'" %acc)
    jilu = cur.fetchone()  ##此时 通过 jilu[0],jilu[1],jilu[2]可以依次访问host,user,password


    fetchall() :

    返回多个元组,即返回多个记录(rows),如果没有结果 则返回 ()

    需要注明:在mysql中是NULL,而在python中则是None

    fetchall()用法:

    cur.execute("select * from user")

    如果select本身取的时候有多条数据时:

    cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。

    cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),

    如果select本身取的时候只有一条数据时:

    cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。

    cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),),

    python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组


    展开全文
  • 3.2 Python 连接数据库

    万次阅读 2019-05-24 11:36:53
    1.16 Python3 MySQL 数据库连接 1.16.1.什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-...
  • 首次尝试anaconda python连接数据库,记录一下 1. 到相应python 版本环境下,下载相应数据库包,以下为命令行 source activate python3.5env #进入Python3.5环境下 conda install pymysql #下载mysql数据库交互...
  • python连接数据库并执行SQL语句

    万次阅读 2018-08-04 11:06:15
    python连接数据库并执行SQL语句 第一次发表博客,如果有什么错误请见谅 1.创建与数据库连接对象 2.建立游标对象 3.利用游标对象 执行SQL语句命令 4.#提交到数据库 5.关闭游标对象 6.关闭数据库连接 7.建立一个...
  • python连接数据库时遇到了这样一个问题: Traceback (most recent call last):  File "./mysql-python.py", line 5, in  conn=MySQLdb.connect(host='localhost',port='3306',user='root',passwd='a123456
  • 详见文档:Python连接Teradata数据库-ODBC方式 2.使用teradatasql连接TD数据库 Teradata SQL驱动(Python)下载地址:teradatasql-16.20.0.42-py3-none-any.whl (1)使用pip安装或升级(macOS or Linux系统) ...
  • python连接数据库显示计算机积极拒绝怎么办## 标题 出现这种情况可能有以下几种情况导致 1、数据库服务器可能没有开启,确保你已经开启了数据库服务器 如果开启了还不行,就看看端口有没有被占用。 2、确保正确安装...
  • Python中插入数据时执行后,没有报任何错误,但数据库中并没有出现新添加的数据 原因:缺少提交操作。 解决方案:Python操作数据库时,如果对数据表进行修改/删除/添加等控制操作,系统会将操作保存在内存,只有...
  • python连接数据库查询

    千次阅读 2019-05-29 14:56:31
    这是我的第一篇python文章,至于为什么学python呢?源于我前端工作比较不饱和,所以我老大叫我多学点东西,然后他就叫我可以考虑学一下python。然后呢,我也是感觉没什么事就打着学一下的心态去学了一下,不知不觉...
  • python连接数据库出报表

    千次阅读 2015-12-28 15:19:55
    python连接oracle数据库后,读取sql文件,以;分隔,遍历执行sql,将列名和记录打印出来。 #!/usr/bin/python #coding=utf8 ###应该数据库连接和游标作为返回值使用,分别关闭 import cx_Oracle as cx_ora import os
  • Python连接数据库的几种方式

    千次阅读 2016-12-09 14:48:13
    Python连接Oracle数据库的方式
  • python连接数据库及操作数据库

    千次阅读 2018-02-27 17:02:08
    在数据分析过程中往往要操作较大的数据集,这就需要连接数据库进行操作import pandas as pd import numpy as np from pandas import Series,DataFrame from sqlalchemy import create_engine import MySQLdb as msd ...
  • python 连接数据库之jaydebeapi

    千次阅读 热门讨论 2018-09-26 11:37:49
    python通过jdbc连接数据库 1、安装visualcppbuildtools_full.exe 链接:https://pan.baidu.com/s/1MLxNJfWNGuKIxgNYkJgUnw 密码:3etc 2、pip install JayDeBeApi https://pypi.org/project/JayDeBeApi/ 3、...
  • connection = pymysql.connect(host="localhost", user="root", passwd="", db="python", charset="utf8") # 制定游标 my_cursor = connection.cursor() # 数据库操作针对增删改 sql = "insert in
  • Python连接数据库时的出现错误: 解决办法: 把pymysql包升级一下就好了。 如果是用anaconda安装的Python,则在相应的环境中把pymysql 更新(update)一下。  ...
  • python连接数据库设置

    千次阅读 2015-10-01 12:33:19
    Pymssql是python用来连接Mssql的一个模块,包含两个扩展模块 Pymssql这是遵循DB-API标准的模块 _mssql是一个直接操作SQL Server的底层模块,它有很多有用的功能,但是不遵循DB-API标准。   pymssqlCnx类  ...
  • Python连接数据库并读取数据

    千次阅读 2020-11-19 15:33:11
    准备: 1.PyCharm编程工具 2.安装pymysql包 ... host='localhost', //连接IP地址,如果是本地就是localhost user='root', //数据库用户名 passwd='123456', //数据库密码 db='test', //需要查询的数
  • 更多Python学习文章请点击 文章目录1.相关1.1. 持久化储存1.1.1 好处1.1.2 数据库1.2. Python操作数据库2. Python-数据库2.1. Python支持的数据库2.2.... 代码连接数据库3.2.1 检测驱动安装情况3....
  • Python连接数据库-pyodbc

    千次阅读 2017-03-17 23:05:56
    1、连接sql server: conn_info = ‘DRIVER={SQL Server};DATABASE=%s;SERVER=%s;UID=%s;PWD=%s’%(database, host, user, pwd) self.mssql_conn = pyodbc.connect(conn_info) self.mssql_cur = self.mssql_conn....
  • 先安装一波这个 pip install six pip install bit_array pip install thriftpy pip install thrift_sasl pip install impyla 然后输入 ...from impala.dbapi import connect ...conn = connect(host='quer...
  • python操作数据库 工具:vscode , navicat for MySQL,使用之前需下载...1.连接数据库 代码: import pymysql host="localhost" username="root" password="123456" db_name="test" #创建connect对象 connect=pym
  • python 用pymssql 连接MS SQL Server数据库或用MySQLdb连接mysql数据库时,经常会遇到中文乱码问题。 为了提高解决问题效率,分析取到的数据的编码格式很重要。 推荐使用 chardet 做编码分析:CMD 下安装
  • 请问如何用python调用dbaccess连接informix数据库,把查询出来的结果放入到python创建的列表中
  • 解决事务型数据库数据库更新数据不同步的问题
  • 1、连接数据库查询数据 #查询操作。 import pymysql mysql_connect = pymysql.connect(host='localhost', user='root', passwd='', db='niushop_b2c', port=3306, charset='utf8') #创建游标并读取数据库数据,逐行...
  • 问题:最近在使用pymysql模块连接数据库时,显示数据库表信息时中文显示乱码 解决办法:找到python安装目录下的connections.py文件,将DEFAULT_CHARSET 改为utf8 如图: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 218,867
精华内容 87,546
关键字:

python连接数据库

python 订阅