近日做了一份实时爬取数据并将数据插入到mysql的事。报错如下
1 TypeError: %d format: a number is required, not str"
解决方法:也就是MySQLdb的字符串格式化不是标准的python的字符串格式化,应当一直使用%s用于字符串格式化
2 UnicodeEncodeError: 'latin-1' codec can't encode characters
解决方法:设置charset='utf8mb4'即可。
import pymysql
插入数据:
connection = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='zhyea.com', db='employees', charset='utf8mb4')
try: with con.cursor() as cur: sql = 'INSERT INTO employees (first_name, last_name, hire_date, gender, birth_date) VALUES (%s, %s, %s, %s, %s)' cur.execute(sql,('Robin', 'Zhyea', tomorrow, 'M', date(1989, 6, 14)))) con.commit() except Exception as e: print(e) conn.rollback() finnally: con.close()
执行查询:
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。