python - 创建 SQL 插入脚本,返回:TypeError: +: 'NoneType' 和 'str' 不支持的操作数类型
问题描述
我有以下数据框。
df = pd.DataFrame({'vin': ['test'], 'modelId':['5641'], 'year': ['2021'] })
我正在尝试使用以下函数从中创建一个 SQL 插入脚本。
import pandas as pd
def createSqlInsertStatement():
global sql_texts,row
sql_texts = []
for index, row in df.iterrows():
sql_texts.append('INSERT INTO '+ ' registry'+' (source, create_time, geo_group_id, status, make, vin, modelId, year)'
+ ' VALUES "MANUAL_LOAD", sysdate, 42, 0, "MITSUBISHI", '+ ',' + str(tuple(row.values))) +';'
return sql_texts
但我不断得到:
TypeError Traceback (most recent call last)
c:\Users\Desktop\testsql.py in <module>
----> 1 createSqlInsertStatement()
c:\Users\Desktop\testsql.py in createSqlInsertStatement()
9 sql_texts = []
10 for index, row in df.iterrows():
---> 11 sql_texts.append('INSERT INTO '+ ' registry'+' (source, create_time, geo_group_id, status, make, vin, modelId, year)'
12 + ' VALUES "MANUAL_LOAD", sysdate, 42, 0, "MITSUBISHI", '+ ',' + str(tuple(row.values))) +';'
13 return sql_texts
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
我需要 ...
INSERT INTO registry (source, create_time, geo_group_id, status, make, vin, modelId, year) VALUES ('MANUAL_LOAD', sysdate, 42, 0, 'MITSUBISHI', '5641', '2021');
我要疯了,正在寻找我找不到的 none 类型,还是我看错了?
解决方案
您的附加语句末尾有一个错误: +';'
应该在“附加”的括号内。现在,您正试图将“追加”的结果与 string(character) 连接起来';'
。
更正为:
sql_texts.append('INSERT INTO '+ ' registry'+' (source, create_time, geo_group_id, status, make, vin, modelId, year)'
+ ' VALUES "MANUAL_LOAD", sysdate, 42, 0, "MITSUBISHI", '+ ',' + str(tuple(row.values)) +';')
编辑:除了更正上面的语法错误之外,我相信您的代码不会为您提供您正在寻找的输出,因为您不希望将元组添加到您的字符串中。此语句可能更简洁(使用format
函数而不是+
)
sql_texts.append("INSERT INTO registry (source, create_time, geo_group_id, status, make, vin, modelId, year) VALUES (\"MANUAL_LOAD\", sysdate, 42, 0, \"MITSUBISHI\", \"{0}\", \"{1}\");".format(row.values[1], row.values[2]))
这给出了输出:
['INSERT INTO registry (source, create_time, geo_group_id, status, make, vin, modelId, year) VALUES ("MANUAL_LOAD", sysdate, 42, 0, "MITSUBISHI", "5641", "2021");']
希望这可以帮助!
推荐阅读
- castle-windsor - Castle Windsor 混凝土类型解析和属性注入
- c# - 从存储过程中获取行到模型
- javascript - javascript图像动画在两个图像之间闪烁
- gulp - gulp 找不到模块'@babel/core'
- android - 测试接收SSL错误
- c# - 拉动刷新(SwipeRefreshLayout)android xamarin c#
- php - 仅检查 Woocommerce 中订单发布元数据中的特定信息
- c# - 在 Mac 中构建项目时无法在 Xamarin iOS 中链接程序集
- python - TensorFlow 回归错误:“无法将字符串转换为浮点数:”
- c++ - 在类中包装 ostream 并模板化 << 运算符