zoukankan      html  css  js  c++  java
  • python数据储存到mysql

      python数据储存到mysql

      其实同Java中的JDBC类似,都是先建立起来与数据库的链接conn,然后获取数据库操作对象(这里是会话指针cursor),然后执行SQL语句,提交,关闭。

     

    一:安装pymysql包以及pandas包:

      pip install pymysql

      pip install pandas这个是读取mysql以及其他形式的数据所需要的包

    二:pymysql使用步骤:

    1. 引入开发包;import pymysql

    2. 获取数据库连接;

      conn=pymysql.connect(host="localhost",user='root',password="",db="hanxiao",charset="utf-8",port=3306)
      #host:连接在本地,user:用户名,password:密码,db:数据库名称,charset:编码方式,port:运行端口3306
    3. 获取会话指针:conn.cursor()

    4. 执行SQL语句:cursor.excute(sql,(参数1,参数n))

    5. 提交:conn.commit()

    6. 关闭:conn.close

     

    三:创建数据库,添加表单信息:

    #创建数据库
    def create_db():
        db = pymysql.connect(host='localhost',user='root', password='123456', db="test1",port=3306)
        cursor = db.cursor()
        cursor.execute("CREATE DATABASE test_db DEFAULT CHARACTER SET utf8")
        db.close()
    ​
    #创建表单
    def create_table(db):
        db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='test')
        cursor = db.cursor()
        cursor.execute('DROP TABLE IF EXISTS test_table')  
        sql = 'CREATE TABLE IF NOT EXISTS test_table(id VARCHAR(255), name VARCHAR(255), age INT, PRIMARY KEY (id))'
        cursor.execute(sql)
        db.close()
        
    #insert数据到表单:
    #方法1:
        def insert(value):
        db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='tv')
        cursor = db.cursor()
        sql = "INSERT INTO test_table(id, name, age) values(%s, %s, %s)"
        try:
            cursor.execute(sql, value)
            db.commit()
            print('插入数据成功')
        except:
            db.rollback()
            print("插入数据失败")
        db.close()
    ​
    #方法2:
        # 创建SQL语句
        sql = "insert into `urls`(`urlname`,`urlhref`) values(%s,%s)"#为了防止sql注入,所以使用%s,%s来替换
        # 执行SQL语句,第一个是sql语句,第二个是补充%s的内容
        cursor.execute(sql, (url.get_text(), "https://en.wikipedia.org" + url["href"]))
    ​

     

    四:读取mysql数据:


    # 获取数据库连接
    connection = pymysql.connect(host='localhost',
                                 user='root',
                                 password='123456',
                                 db='wikiurl',
                                 charset='utf8mb4')
    try:
        #获取会话指针
        with connection.cursor() as cursor:
            #查询语句
            sql = "select `urlname`,`urlhref` from `urls` where `id` is not null"
            #查询所有行数,这里使用execute返回的是一个查询结果表
            count = cursor.execute(sql)
            print(count)
            #查询前三条数据:fetchmany:后面的内容是匹配的个数,从0开始
            result = cursor.fetchmany(size=3)
            print(result)
     
    finally:
        connection.close()

     

    五:读取mysql数据的时候需要使用pandas来读取(excel也是),否则返回的是一给int类型的值

    import pandas as pd
    ​
    #利用pandas 模块导入mysql数据,读取mysql数据,第一个参数是sql操作语句,第二个参数是connect对象
    a=pd.read_sql(sqlcmd,dbconn) #取前5行数据 b=a.head() print(b) ​ ​ # 读取csv数据 # pd.read_csv() # 读取excel数据 #pd.read_excel() # 读取txt数据 #pd.read_table()

     

    六:连接mysql举例:

    import pymysql
    import urllib
    import pandas as pd
    
    
    def vistmysql():
        conn=pymysql.connect(host="localhost",user="root",password="",db="hanxiao")
        cursor=conn.cursor()
        sql=r"select `ename` from `emp`"
        data=pd.read_sql(sql,conn)
        print(data)

      输出:

     

    七:pandas包下载到一半就失败了,待续:

  • 相关阅读:
    Delphi中的接口和抽象类
    设计模式之六大原则
    C 标准库
    linux 管道和重定向
    linux c创建静态库(.a)
    一个C语言程序
    C#动态创建lambda表达式
    linq中order by 和group by (含lambda表达式实现)以及综合案例
    微信扫码登陆原理
    二维码扫码支付原理
  • 原文地址:https://www.cnblogs.com/instead-everyone/p/13768854.html
Copyright © 2011-2022 走看看