User
là một từ dành riêng trong postgresql và được thoát ra bằng cách đặt nó bằng ""
Xem https://stackoverflow.com/a/7651432
. Ngược lại với mysql trong đó các ký tự thoát là dấu gạch ngược.
Bạn cũng cố gắng chèn vào cột có tên Final_Ratio
nhưng xác định một cột Final_Gearing
. Để thử nghiệm, tôi cũng thả và tạo lại bảng mỗi lần chạy. Mã cố định:
import psycopg2
# connect to remote Heroku Postgres DB
pgdb = psycopg2.connect(
host='localhost',
user='test',
password='test',
port='5432',
database='test_stackoverflow'
)
pgcursor = pgdb.cursor()
# verify I've got my credentials in correctly
def check_connection():
pgcursor.execute("select version()")
data = pgcursor.fetchone()
print("Connection established to: ", data)
def create_table():
sql = '''CREATE TABLE estimation_data
("User" text PRIMARY KEY,
Motor_kV integer,
Batt_Volt decimal,
Pinion integer,
Spur integer,
Final_Gearing decimal,
Wheel_Rad decimal);'''
pgcursor.execute(sql)
pgdb.commit()
def drop_table():
sql = "DROP TABLE IF EXISTS estimation_data;"
pgcursor.execute(sql)
pgdb.commit()
def pg_add_data(sql,val):
pgcursor.executemany(sql, val)
pgdb.commit()
check_connection()
drop_table()
create_table()
pgsql = '''INSERT INTO estimation_data
("User", Motor_kV, Batt_Volt, Pinion, Spur, Final_Gearing, Wheel_Rad)
VALUES (%s, %s, %s, %s, %s, %s, %s);'''
pgval = [
('204.210.165.122', 2400, 16.8, 16, 54, 3.92, 2.5),
('204.210.165.123', 3500, 12.6, 16, 54, 3.92, 2.5),
('204.210.165.124', 4200, 8.4, 12, 54, 3.92, 2.5)]
pg_add_data(pgsql, pgval)
Mặc dù việc tìm hiểu những kiến thức cơ bản về một trang web sản xuất là rất tốt, nhưng tôi thực sự khuyên bạn nên sử dụng một thư viện cấp cao như SQLalchemy.