首页 > 数据库 >python连接mysql数据库

python连接mysql数据库

时间:2023-12-04 18:13:41浏览次数:38  
标签:cur python 数据库 mysql pymysql cursor sql conn

说明: 1.如果你使用的是其他数据库,例如PostgreSQL,你可以使用psycopg2库来连接和获取数据库数据。使用方法类似,只需要根据你的实际情况修改连接参数和SQL语句即可。 2.首先确保本地数据库可以查询到数据,比如:若没有登陆SVN,本地数据库无法查询数据,那么python代码也会执行失败  

一、基础了解

1.安装pymysql库: pip install pymysql

  pymysql非python自带,导入前需要在Python中安装pymysql库

2.创建连接时,数据库端口是默认的3306,conn里port可以不写

  如果不是,则要声明一下端口 port = '3307'

3.获取数据库数据的步骤如下:

    1. 导入pymysql
    2. 创建连接conn = pymysql.connect()
    3. 创建游标(数据库交互对象)cursor = conn.cursor()
    4. 写sql语句
    5. 用游标执行sql语句cursor.execute(sql)
    6. 提交事务/回滚事务conn.commit()/conn.rollback()
    7. 获取打印执行结果
    8. 关闭游标
    9. 关闭连接
实例如下:
# 1.导入pymysql
import pymysql
 
# 2.创建连接
conn = pymysql.connect(host='localhost', user='root', password='password', db='database_name')
 
# 3.创建游标对象
cursor = conn.cursor()
 
# 4.执行SQL查询语句
sql = "SELECT * FROM table_name"
cursor.execute(sql)
 
# 5.获取查询结果
# 使用fetchone()方法获取单条数据  datal = cursor.fetchone()
# 使用fetchall() 获取全部数据 data2 = cursor.fetchall( )
# 使用fetchmany(n) 获取n条数据 data2 = cursor.fetchmany(2) 获取2条数据
result = cursor.fetchall() # 6.一行一行打印查询结果,也可以直接打印,显示效果不太好# print(result) for row in result: print(row) 
# 7.关闭游标和数据库连接
cursor.close()
conn.close()

  

4.conn自带事务,可以直接conn.commit()提交事务

5.增删改数据,均要提交commit(),没有确认提交,则数据库数据是未发生变化的。查询不用commit数据

6.插入内容不写死:

name = input("请输入名字:")
id = input("请输入ID:")
sql = 'insert into t_user values(%d, "%s")'%(int(id),name)   # 编写sql语句
corcur.execute(sql)
conn.commit()

7.封装增删改查数据库数据的方法:

import pymysql
cur = None
conn = None
def getall(sql): #用来执行查询
    # 连接数据库,charset:通信采用的编码方式,默认是gb2312',要求与数据库创建时指定的编码格式一致
    conn = pymysql.connect(host='localhost', user='root', password='123123', db='test1', charset='utf8)
    cur = conn.cursor   # 获取cursor对象
    cur.execute(sql)  # 通过cursor的对象去执行SQL语句
    return cur.fetchall()
def exceDML(sql): #用来执行插入
    conn = pymysql.connect(host='localhost, user='root, password='123123', db='test1'charset='utf8')
    cur = conn.cursor # 通过cursor的对象去执行SQL语句
    cur.execute(sql)
    # 提交事物
    conn.commit()
def close0: #用来关闭连接
    if cur:
        cur.close()
    if conn:
        conn.close()

 

from day3 import mysqlHelper
name = input(“请输入名字 :")
id = input(“请输入ID :")
sql1 = "insert into t user values(%d,"%s")%(int(id),name)
sql2 = 'select * from t_user'
mysqlHelper.exceDML(sql1)
print(mysqlHelper.getall(sql2))
mysqlHelper.close()

8.插入数据用占位符%s可以防止sql注入:

# 插入时使用“%s”作为占位符可以防SQL注入
sql = r"""insert into new table (id,name,age) values (%s,%s,%s)"""
cursor.execute(sql,(1,"小明","10"))cursor.execute(sql,(2,"小张","11"))
cursor.executemany(sql, ((3,"Tom","12"),(4,"Jim", "13")))  # 多参数传入时需要使用元组,不得列多参数
cursor.executemany(sql,((5,"Tom","14"),(6,"Jim","15")))

二、按条件查询数据库数据

查询某数据,查询条件不固定写死:

# -*- coding: utf-8 -*-
import pymysql, datetime
def connect_mysql(dates):
    conn = pymysql.connect(host='10.185.66.85',
                           port=3306,
                           user='test1',
                           password='test1234',
                           db='test',
                           charset="utf8")
    cursor = conn.cursor()
    sql = f"select * from est_flow_charge where trading_day ='{dates}'"
    cursor.execute(sql)
    result = cursor.fetchall()
    for row in result:
        print(row)
    cursor.close()
    conn.close()

if __name__ == '__main__':
    dates = '2023-12-01'
    # dates = datetime.date.today()  获取当日日期
    connect_mysql(dates)

  

标签:cur,python,数据库,mysql,pymysql,cursor,sql,conn
From: https://www.cnblogs.com/lx001/p/17875521.html

相关文章

  • MySQL系列之读写分离架构——Atlas介绍、安装配置、Atlas功能测试、生产用户要求、Atl
    文章目录1.Atlas介绍2.安装配置3.Atlas功能测试4.生产用户要求5.Atlas基本管理6.自动分表7.关于读写分离建议1.Atlas介绍Atlas是由Qihoo360,Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy0.8.2版本的基础上,对其......
  • Python中级-01-数据类型的内置方法
    本篇内容来源于:【1.0】Python中级之数据类型的内置方法-Chimengmeng-博客园(cnblogs.com)写的verygood,非常详细【一】数字类型【1】整数类型(int)(1)基本运算实现整数的加法运算。#int.__add__(other)num1=5num2=2result=num1.__add__(num2)print(......
  • mybatis sql查询后,返回回来的字段顺序变了;在项目中通过mybatis查询数据库,同样的查询
    问题描述:过程就不看了直接上结果查询语句中的字段顺序信息和返回的字段信息不一致如图:realSql是查询语句,result是查询结果查询语句中的字段顺序信息和返回的字段信息不一致解决方案:转载地址这里复制一份防删......
  • 【python入门之垃圾回收机制】---python 垃圾回收机制
    【一】引入解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存的容量是有限的,这就涉及到变量值所占用内存空间的回收问题当一个变量值没有用了(简称垃圾)就应该将其占用的内存给回收掉,那什么样的变量值是没有用的呢?单从逻辑层面分析,我们定义变量将变量值存......
  • 【Lidar】基于Python的Open3D库、Laspy库保存点云文件/点云格式转换
    ​     因为最近在做点云相关的项目,过程中用到了Python中的Open3D库和Laspy库,所以今天给大家分享一下如何使用Open3D和Laspy这两个库对点云数据进行保存和格式的转换。1Open3D库介绍    Laspy库我到时候会单独介绍,所以这里就不多说了!!!        Open......
  • python中级之垃圾回收机制
    引入当解释器在执行到变量赋值的时候,例如:name='xiaoying',那么会向内存空间申请一块空间来存放变量的值,而内存的空间是有限的,并不能无限制的存放,那么这就涉及到了一个回收的问题,当一个变量值没用了之后,简称(垃圾),那么垃圾就该放进垃圾桶中进行回收,将其所占用的内存空间释放回收......
  • Python字符编码
    编码,文字和二进制之间的一个对照表。【1】阶段一:一家独大(ASCII)(1)ASCII表的诞生现代计算机起源于美国,所以最先考虑仅仅是让计算机识别英文字符,于是诞生了ASCII表(2)ASCII表的特点只有英文字符与数字的一一对应关系一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,......
  • mysql和Oracle 查询某个时间之内的数据
    查询最近一个月的数据mysqlSELECTid,title,endtimefromclassroomwhereyears=2022anddate_sub(CURDATE(),interval1month)<endtime;DATE_SUB()函数从日期减去指定的时间间隔,本文是从当前时间减去一个月。CURDATE()函数表示当前年月日,NOW()函数表示当前年月......
  • 通过Python和大数据技术实现网站内容的个性化推荐
    随着互联网的快速发展,越来越多的人使用网络来获取信息和娱乐。在这个过程中,推荐系统成为了一个非常重要的工具,通过分析用户的行为和偏好,提供个性化的推荐内容,提升用户的体验和满意度。本文将介绍如何使用Python和大数据技术实现网站内容的个性化推荐。一、推荐系统的分类推荐系统根......
  • MySQL选择题(四) 事件/触发器
    单选在MySQL中,关于触发器,以下说法正确的是:a.可以对临时表创建触发器b.对INFORMATION_SCHEMA或performance_schema中的表,可以创建触发器c.对于InnoDB表,即使触发器中的语句执行失败,当在触发操作是执行后执行语句时,作为触发条件的SQL也会成功执行。d.对于同一个表,可以定义......