【发布时间】:2021-02-01 13:53:16
【问题描述】:
我正在尝试创建一个新的数据库表并将数据插入到该表中。示例我有两个表数据,表列名称和列数据类型。我想创建这两个表并将数据插入到正确的表名中。我使用了带有连接参数的python函数。征求您的建议以实现这一目标。
json 数据
data_JSON = """
[
{
"dbName": "sampledata",
"tableName": [
"status_in","status_out"
],
"tableColumn": [
[
{
"type": "INT",
"title": "phoneno"
},
{
"type": "VARCHAR (60)",
"title": "name"
},
{
"type": "DATE",
"title": "date"
}
],
[
{
"type": "INT",
"title": "phoneno"
},
{
"type": "VARCHAR (60)",
"title": "name"
},
{
"type": "DATE",
"title": "date"
}
]
],
"tableData": [
[
{
"phoneno": "99999",
"name": "ticker1",
"date": "01/01/2021"
},
{
"phoneno": "99999",
"name": "ticker2",
"date": "01/01/2021"
},
{
"phoneno": "99999",
"name": "ticker3",
"date": "01/01/2021"
}
],
[
{
"phoneno": "99999",
"name": "few1",
"date": "01/01/2021"
},
{
"phoneno": "99999",
"name": "few2",
"date": "01/01/2021"
},
{
"phoneno": "99999",
"name": "few1",
"date": "01/01/2021"
}
]
]
}
]
"""
Python 代码
import json
import psycopg2
from psycopg2 import sql
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
def create_table(data_JSON):
try:
filedata = json.loads(data_JSON)
db_name = filedata[0] ['dbname']
con = psycopg2.connect(user='postgres', host='127.0.0.1', database = db_name, password='test@123')
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cur = con.cursor()
for sheet in data_dict[0]['tableName']:
sheet_name = sheet
for z in data_dict[0]['tableColumn']:
for column in z[0][title]:
column_name = column
for dtype in z[0]['type']:
datatype = dtype
cur.execute(f"CREATE TABLE {sheet_name}({column_name} {data_type});")
for key,value in data_dict[0]['tableData']:
cur.execute(f"INSERT INTO {sheet_name}({column_name})VALUES ({value});")
con.commit()
cur.close()
con.close()
except Exception:
return False
return True
【问题讨论】:
-
这是一些代码。如果您遇到错误,请写下来:)
-
我没有收到任何错误。
-
因为你没有打印,尝试修改
except Exception: return False为except Exception as e: print(e) -
现在也没有显示错误...
-
然后验证您的数据库