gpt4 book ai didi

python - 如何从字典创建 sqlite3 表

转载 作者:行者123 更新时间:2023-12-01 01:02:10 24 4
gpt4 key购买 nike

import sqlite3

db_file = 'data/raw/db.sqlite'
tables = {
'Players': {
'id': 'INTEGER PRIMARY KEY',
'fname': 'TEXT',
'lname': 'TEXT',
'dob': 'DATETIME',
'age': 'INTEGER',
'height': 'INTEGER', # inches
'weight': 'INTEGER', # pounds
'rank': 'INTEGER',
'rhlh': 'INTEGER', # 0 - right, 1 - left
'bh': 'INTEGER', # 0 - onehand, 1 - twohand
'city': 'TEXT', # birth city
'county': 'TEXT' #birth country
}
}


conn = sqlite3.connect(db_file)
c = conn.cursor()

for table in tables.keys():
for cols in tables[table].keys():
c.execute("CREATE TABLE {} ( \
{} {})".format(table, cols, tables[table][cols]))

c.close()
conn.close()

有没有办法简单地将这个 tables 嵌套字典对象转换为数据库表?我收到的错误sqlite3.OperationalError: table Players已经存在,这是显而易见的,因为我多次调用CREATE TABLE

有没有人有一个快速的技巧来制作这样的数据库,使用最终将包含多个表的嵌套字典?这是一个可怕的做法吗?我应该采取什么不同的做法?

谢谢!

<小时/>

我是如何解决的:

答案在下面的评论中。

最佳答案

import sqlite3

db_file = 'data/raw/test3.sqlite'
initial_db = 'id INTEGER PRIMARY KEY'
tables = {
'Players': {
'fname': 'TEXT',
'lname': 'TEXT',
'dob': 'DATETIME',
'age': 'INTEGER',
'height': 'INTEGER', # inches
'weight': 'INTEGER', # pounds
'rank': 'INTEGER',
'rhlh': 'INTEGER', # 0 - right, 1 - left
'bh': 'INTEGER', # 0 - onehand, 1 - twohand
'city': 'TEXT', # birth city
'country': 'TEXT' #birth country
}
}


conn = sqlite3.connect(db_file)
c = conn.cursor()

for table in tables.keys():
c.execute("CREATE TABLE {} ({})".format(table, initial_db))
for k, v in tables[table].items():
c.execute("ALTER TABLE {} \
ADD {} {}".format(table, k, v))

c.close()
conn.close()

关于python - 如何从字典创建 sqlite3 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com