簡體   English   中英

如何使用python faker填充數據庫

[英]how to populate database using python faker

我正在嘗試使用 python faker 填充表,但出現此錯誤。 這是我的代碼

import psycopg2
from faker import Faker
fake = Faker()

conn = psycopg2.connect(database="testdb", user="****", password="****", host="127.0.0.1", port="5432")
print "Opened database successfully"
cur = conn.cursor()

for i in range (10):
    Id =fake.random_digit_not_null()
    name = fake.name()
    age=fake.random_number(digits=None) 
    adress =fake.address()
    salary = fake.random_int(min=0, max=9999)
    cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (Id,name,age,adress,salary)");

conn.commit()
print "Records created successfully";
conn.close()

這是錯誤

Traceback (most recent call last):
  File "fakegenerator.py", line 16, in <module>
    VALUES (Id,name,age,adress,salary)");
psycopg2.ProgrammingError: column "id" does not exist
LINE 1: ...OMPANY (ID,NAME,AGE,ADDRESS,SALARY)       VALUES (Id,name,ag...
                                                             ^
HINT:  There is a column named "id" in table "company", but it cannot be referenced from this part of the query.

您沒有將值填充到查詢中,而是將字符串按原樣發送到數據庫。 這實際上會用值填充您的查詢:

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (%s, %s, %s, %s, %s)", (Id, name, age, adress, salary));

這將填充了您想要插入到元組中的值的變量包裝起來,讓 psycopg2 處理正確引用您的字符串,這對您來說工作量較少,並且可以防止 SQL 注入,如果您使用您的代碼作為生產代碼的基礎。 這記錄在模塊的文檔中

cur.execute 中的 sql 請求似乎是一個問題試試這個

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
  VALUES ({},{},{},{},{})".format(Id,name,age,adress,salary));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM