首页 > 解决方案 > 此错误的背景:http://sqlalche.me/e/9h9h

问题描述

我目前是编程新手;所以问题是我无法将 csv 文件导入我的 PostgreSQL 数据库,下面是我的代码:

import os
import csv
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(os.getenv("DATABASE_URL"))
db = scoped_session(sessionmaker(bind=engine))

def main():
    b = open("books.csv")
    reader = csv.reader(b)
    for isbn, title, author, year in reader:
        db.execute("INSERT INTO books1(isbn, title, author, year) VALUES(:isbn, :title, :author, 
         :year)",
                {"isbn":isbn, "title":title, "author":author, "year":year})

    print(f"{isbn} Added to {title} ")
db.commit()


if __name__ == "__main__":
    main()

错误显示为

[SQL: INSERT INTO books1(isbn, title, author, year) VALUES(%(isbn)s, %(title)s, %(author)s, % 
(year)s)]
[parameters: {'isbn': 'isbn', 'title': 'title', 'author': 'author', 'year': 'year'}]
(Background on this error at: http://sqlalche.me/e/9h9h)

任何人都可以帮助我...拜托!

标签: pythonflask

解决方案


I imagine you are no longer trying to find an for this problem.

However, Ksh1618's response led me to the solution for mine.

It appears I created this error:(Background on this error at: http://sqlalche.me/e/14/9h9h)

When I was inputting data into columns that were asking for different datatypes.

EX: These Columns below created the error when I input the respective data below:

Role =        Column(String(32))
Name =        Column(String(32))
Comment =     Column(String(1024))
Context =     Column(String(1024))
Engine =      Column(String(32))
Tokens =      Column(Integer)
Temp =        Column(Float)
Top_P =       Column(Float)
Stop  =       Column(String(32))
Pres_Pen =    Column(Float)
Freq_Pen =    Column(Float)
Echo =        Column(String(32))
N =           Column(Integer)
Stream =      Column(String(32))
Logprobs =    Column(Integer)
Best_Of =     Column(Integer)
Logit_Bias =  Column(Integer)

"Role": "Test_Role", 
"Name": "Test_Name", 
"Comment": "Test_Comment", 
"Context": "message", 
"Engine": "engine", 
"Tokens": 64, 
"Temp": 0.1, 
"Top_P": 0.1, 
"Stop": "[\n]", 
"Pres_Pen": 0.1, 
"Freq_Pen": 0.1, 
"Echo": "string", 
"N": 1, 
"Stream": "string", 
"Logprobs": 1, 
"Best_Of": 1, 
"Logit_Bias": 1

Changed my data to this:

Role =        Column(String(32))
Name =        Column(String(32))
Comment =     Column(String(32))
Context =     Column(String(32))
Engine =      Column(String(32))
Tokens =      Column(String(32))
Temp =        Column(String(32))
Top_P =       Column(String(32))
Stop  =       Column(String(32))
Pres_Pen =    Column(String(32))
Freq_Pen =    Column(String(32))
Echo =        Column(String(32))
N =           Column(String(32))
Stream =      Column(String(32))
Logprobs =    Column(String(32))
Best_Of =     Column(String(32))
Logit_Bias =  Column(String(32))

"Role": "Test_Role", 
"Name": "Test_Name", 
"Comment": "Test_Comment", 
"Context": "message", 
"Engine": "engine", 
"Tokens": "64", 
"Temp": "0.1", 
"Top_P": "0.1", 
"Stop": "None", 
"Pres_Pen": "0.1", 
"Freq_Pen": "0.1", 
"Echo": "False", 
"N": "1", 
"Stream": "False", 
"Logprobs": "1", 
"Best_Of": "1", 
"Logit_Bias": "{}"

Data successfully input into the database.

I'm sure this error can mean other things. But, it seemed to fix my problem.


推荐阅读