我正在尝试将一个 super 简单的 .csv/txt 文件读取到 Python 中,并将数据插入到本地 MySQL 数据库中。
这是 Python .csv reader 模块:
import MySQLdb
import pandas as pd
import numpy as np
import xlwings as xw
import csv
# Connect to database
db = MySQLdb.connect(
host = "localhost",
user = "root",
passwd = "/pwd/",
db = "mydb",
)
sql = '''INSERT INTO dimension(dimension, dimensionType, abbreviation, translationHr, code, priority) VALUES (%s, %s, %s, %s, %s, %s)'''
cursor = db.cursor()
# Open CSV, read data
with open('/users/edchigliak/desktop/baza.txt', 'rb') as f:
reader = csv.reader(f, delimiter=';')
# Insert into db
for row in reader:
cursor.execute(sql, row)
db.commit()
sql = '''SELECT * FROM dimension'''
cursor.execute(sql)
db.close()
result = cursor.fetchall()
print result
然而,这给了我这个错误:
_mysql_exceptions.OperationalError: (1366, "Incorrect integer value: 'dimensionType' for column 'dimensionType' at row 1")
这是一个link到我正在阅读的文件(从 Excel 2016 for Mac 保存为 .csv,然后从 SublimeText 重新保存为 UTM-8)。
如果我尝试像这样使用 Pandas 模块来做到这一点:
df=pd.read_csv('/users/edchigliak/desktop/baza.txt')
for row in df:
cursor.execute(sql, row)
db.commit()
我收到此错误:
query = query % tuple([db.literal(item) for item in args]) TypeError: not all arguments converted during string formatting
我做错了什么?
- 没有以正确的方式读取 .csv?
- 将值导入 python/pandas 后不进行转换?
- 未正确插入数据库?
最佳答案
通过这些 % 构建 sql 字符串,您不会得到所需值周围的 ''!您可以使用“{0}”和格式或任何 SQL 字符串生成器...
关于python - 使用Python读取.txt并插入MySQL数据库时出现"Incorrect integer value..."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801603/