其实同Java中的JDBC类似,都是先建立起来与数据库的链接conn,然后获取数据库操作对象(这里是会话指针cursor),然后执行SQL语句,提交,关闭。
一:安装pymysql包以及pandas包:
pip install pymysql
pip install pandas
这个是读取mysql以及其他形式的数据所需要的包
二:pymysql使用步骤:
-
-
获取数据库连接;
conn=pymysql.connect(host="localhost",user=‘root‘,password="",db="hanxiao",charset="utf-8",port=3306) #host:连接在本地,user:用户名,password:密码,db:数据库名称,charset:编码方式,port:运行端口3306
-
获取会话指针:
conn.cursor()
-
执行SQL语句:
cursor.excute(sql,(参数1,参数n))
-
提交:
conn.commit()
-
关闭:
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 ? #利用pandas 模块导入mysql数据,读取mysql数据,第一个参数是sql操作语句,第二个参数是用cursor.execute捕获到的对象 a=pd.read_sql(sqlcmd,dbconn) #取前5行数据 b=a.head() print(b) ? ? # 读取csv数据 # pd.read_csv() # 读取excel数据 #pd.read_excel() # 读取txt数据 #pd.read_table()