Python操作SQL执行CREATE TABLE建表时语法报错问题咨询
语法错误原因
- 核心问题是列名使用了带空格的命名,SQL会将空格识别为标识符/关键字的分隔符,无法正确解析列名:
population size被SQL误判为列名是population,size是数据类型前缀,但后面又跟了INTEGER(10),直接触发语法冲突capital city同理被误判为列名capital+ 无效关键字city,后续的VARCHAR(300)也无法被正确识别
- 如果你确实需要保留空格作为列名的一部分,需要用对应数据库的标识符包裹符括住列名(MySQL用反引号
`,PostgreSQL/SQL Server用双引号,需开启对应配置),更推荐的写法是用下划线代替空格命名列,避免额外兼容问题。
修正后的建表语句示例
mycursor = mydb.cursor() # 调整列名的空格为下划线后即可正常执行 mycursor.execute("CREATE TABLE countries (name VARCHAR(300), population_size INTEGER(10), \ capital_city VARCHAR(300))") mycursor.execute("SHOW TABLES") for tb in mycursor: print(tb)
内容的提问来源于stack exchange,提问作者Hagai Buachi
相关产品推荐
相关产品推荐

