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包下载到一半就失败了,待续:

原文地址:https://www.cnblogs.com/instead-everyone/p/13768854.html