【发布时间】:2021-02-03 11:42:03
【问题描述】:
我正在尝试将行插入到我的数据库中。成功建立与数据库的连接。当我尝试插入我想要的行时,我在 sql 中收到错误。该错误似乎来自我的变量“network_number”。我正在运行嵌套 for 循环以遍历从 1.1.1 - 254.254.254 的网络编号范围,并将每个唯一 IP 添加到数据库中。网络号以字符串形式写入,因此网络号列是否应设置为 VARCHAR 或 TEXT 以包含句号/句点?所需的输出是用每个网络号填充我的数据库表。您可以找到分配给变量 sql_query 的 sql 查询。
def populate_ip_table(ip_ranges):
network_numbers = ["", "", ""]
information = "Populating the IP table..."
total_ips = (len(ip_ranges) * 254**2)
complete = 0
for octet_one in ip_ranges:
network_numbers[0] = str(octet_one)
percentage_complete = round(100 / total_ips * complete, 2)
information = f"{percentage_complete}% complete"
output_information(information)
for octet_two in range(1, 254 + 1):
network_numbers[1] = str(octet_two)
for octet_three in range(1, 254 + 1):
network_numbers[2] = str(octet_three)
network_number = ".".join(network_numbers)
complete += 1
sql_query = f"INSERT INTO ip_scan_record (ip, scanned_status, times_scanned) VALUES ({network_number}, false, 0)"
execute_sql_statement(sql_query)
information = "100% complete"
output_information(information)
输出
[ * ] Connecting to the PostgreSQL database...
[ * ] Connection successful
[ * ] Executing SQL statement
[ ! ] syntax error at or near ".50"
LINE 1: ...rd (ip, scanned_status, times_scanned) VALUES (1.1.50, false...
^
【问题讨论】:
-
尝试将network_number转换成字符串
-
为什么不使用Network types?
标签: python-3.x postgresql