Python向MySQL中写入数据的方法和MySQL非常类似,这里主要想说明一个小点,无论输入的数据类型如何,语句中的占位符均使用%s。这是因为Python写入数据到MySQL的语句为字符串,这样把生成的命令直接传递给MySQL就可以了。(下面代码运行的前提条件是数据库中已经存在对应的数据表!!!)
import pymysql
import logging
import pandas as pd
db_name = 'name'
db_user = 'user'
db_pass = 'psaa'
db_ip = 'ip'
db_port = 3306
#写入数据到数据库中
def writeDb(sql,db_data=()):
"""
连接mysql数据库(写),并进行写的操作
"""
try:
conn = pymysql.connect(db=db_name,user=db_user,passwd=db_pass,host=db_ip,port=int(db_port),charset="utf8")
cursor = conn.cursor()
except Exception as e:
print(e)
logging.error('数据库连接失败:%s' % e)
return False
try:
cursor.execute(sql, db_data)
conn.commit()
except Exception as e:
conn.rollback()
logging.error('数据写入失败:%s' % e)
return False
finally:
cursor.close()
conn.close()
return True
sql = """ INSERT INTO user(height,weight,sex) VALUES(%s,%s,%s) """
data = (height, weight, sex)
result = writeDb(sql, data)
也就是无论输入的数据是否为字符串,下面都是%s,这里不存在%f这种概念。
sql = """ INSERT INTO user(height,weight,sex) VALUES(%s,%s,%s) """