【发布时间】:2018-09-06 13:54:11
【问题描述】:
我正在尝试从文件中读取 JSON 并将其插入 MySQL 数据库。但我收到以下错误:
Traceback (most recent call last):
File "loopedadd.py", line 44, in <module>
cursor.execute(add_record, data_record)
File "/Library/Python/2.7/site-packages/mysql/connector/cursor.py", line 536, in execute
stmt = operation.encode(self._connection.python_charset)
AttributeError: 'function' object has no attribute 'encode'
我已尝试与use_unicode=True, charset='utf8' 连接,但无济于事。
任何有关如何修复此错误的帮助将不胜感激。
我的代码如下:
import mysql.connector
import Queue, json
cnx = mysql.connector.connect(user="root",
host="192.168.1.64",
password="....",
database="records",
port=3306)
print("connected")
cursor = cnx.cursor()
queue = Queue.Queue()
content = json.load(open("data.txt","r"))
for jsonobj in content:
queue.put(jsonobj)
add_record = (
"INSERT INTO records "
"(id, timestamp, location, value, unit) "
"VALUES (%s, %s, %s, %s, %s)")
while not queue.empty():
values = queue.get()
data_record = (values['id'], values['timestamp'],
values['location'], values['reading'], values['unit'])
cursor.execute(add_record, data_record)
cnx.commit()
queue.task_done()
【问题讨论】:
-
显示更多回溯,这也是将数据加载到数据库中的一种非常低效的方式
-
operation是一个函数。我建议你弄清楚为什么operation不是一个函数,也不是一个(大概)字符串。 -
@aws_apprentice 我已经编辑了帖子以包含完整的回溯。我正在运行一个实验来对数据库性能进行基准测试,因此是单次写入和提交
标签: python mysql sql mysql-python