gpt4 book ai didi

Python 和 MySQLdb - 数据未插入,数据转换也错误

转载 作者:行者123 更新时间:2023-11-29 11:41:51 24 4
gpt4 key购买 nike

我正在尝试做一个简单的

  • 插入本地主机 MySQL 5.7 数据库
  • 使用 Python 2.7 脚本

没什么特别的,但这正是我得到的结果 - 什么也没有。

我在一个单独的测试脚本中一点一点地测试了这个该死的东西,没有出现错误,但也没有数据插入到表中。问题发生在第一个 SQL 变量(可能),并且最后一次 try/catch 中出现一个错误。

我想我没有正确进行数据类型转换

这是代码:

#!/usr/bin/python

import MySQLdb
import pandas as pd
import numpy as np
import xlwings as xw

# ---------- Connect to Excel sheet, get data (list of lists)
wb = xw.Workbook('/users/edchigliak/sites/xlwings/baza.xlsx')
data = xw.Range('dimensions', 'A2:F71').value

# ---------- Open database connection, insert data into table
db = MySQLdb.connect("localhost","root","/pass/","budgeteer")
cursor = db.cursor()

下面的sqlfor可能写得很糟糕:

sql = """INSERT INTO dimensions(dimension, dimType, abbreviation, translationHr, code) VALUES (%s, %d, %s, %s, %d)"""  

for row in data:
try:
cursor.execute(sql, row)
db.commit()
except:
db.rollback()


# ---------- Check if INSERT successful
sql = """SELECT * FROM dimensions"""

try:
cursor.execute(sql)

# ---------- Fetch all the rows in a list of lists
results = cursor.fetchall()

for row in cursor:

id = row[0]
dimension = row[1]
dimType = row[2]
abbreviation = row[3]
translationHr = row[4]
code = row[5]

这是错误,转到“异常(exception)”:

Error: unable to fetch data.

    # Now print fetched result
print "Dim. ID: %d, Dim.: %s, Dim. type: %d, Abbrev.: %d, Translat.: %s, Code: %d" % (id, dimension, dimType, abbreviation, translationHr, code)

except:
print "Error: unable to fetch data"

db.close()

如果我删除 try block :

python git:master ❯ python proba.py
Traceback (most recent call last):
File "proba.py", line 47, in
print "Dim. ID: %d, Dim.: %s, Dim. type: %d, Abbrev.: %d, Translat.: %s, Code: %d" % (id, dimension, dimType, abbreviation, translationHr, code) TypeError: %d format: a number is required, not str
python git:master ❯

就其值(value)而言,这是在脚本开头从 Excel 读取的列表示例(也许“None”会产生问题?):

[1.0, u'austria', 1.0, u'at', None, 4.0]
[2.0, u'belgium', 1.0, u'be', None, 7.0]
[3.0, u'czech', 1.0, u'cz', None, 9.0]

最佳答案

无论值的类型如何,您都应始终使用 %s 作为参数标记(而不是 %d 等):

sql = ("INSERT INTO dimensions(dimension, dimType, abbreviation, "
"translationHr, code) VALUES (%s, %s, %s, %s, %s)")
cursor.execute(sql, row)

数据库驱动程序将为您处理任何引用。

关于Python 和 MySQLdb - 数据未插入,数据转换也错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35653116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com