在Python中从字符串中推断出适当的数据库类型声明

unm*_*ted 1 python sqlite postgresql types

我正在从Python词典构建一些Postgres表,其中{'key':'value'}对对应于列'key'和字段'value'.这些是从.dbf文件生成的 - 我现在将.dbf文件的内容传递给一个脚本,该脚本返回一个dicts列表,如:

{'Warngentyp': '', 'Lon': '-81.67170', 'Zwatch_war': '0', 'State':...
Run Code Online (Sandbox Code Playgroud)

目前我将这些放入没有类型声明的sqlite数据库,然后将其转储到.sql文件,手动编辑架构,并导入Postgres.

我希望能够推断出正确的类型声明,基本上遍历一个字符串列表,如['0','3','5']或['ga','ca','tn']或[ '-81.009','135.444',' - 80.000']并生成类似'int','varchar(2)','float'的内容.(我会对Python,Postgres或SQLite工具同样满意.)

有没有这样做的包,或者直接实现它的方法?

Unk*_*own 5

不要使用eval.如果有人插入错误的代码,它可能会阻塞您的数据库或服务器.

而是使用这些

def isFloat(s):
try:
    float(s)
    return True
except (ValueError, TypeError), e:
    return False


str.isdigit()
Run Code Online (Sandbox Code Playgroud)

其他一切都可以是varchar

  • "如果有人插入了错误的代码,它可能会阻塞你的数据库或服务器"什么?怎么会发生?谁是可以插入错误代码的"某人"?什么"坏代码"将使服务器软化?'import sys; sys.crash_server(True)'作为列值? (3认同)