所以我写了一个程序来转换我的.csv文件,并将转换后的文件导出到数据库中。csv文件都有相同的列,我试图使用循环创建多个表,我得到了这个错误。
pymysql.err.programmingerror:(1064,“您的sql语法有错误;请检查与您的mariadb服务器版本相对应的手册,以获取要在“”附近使用的正确语法(\n
{}int,\n'在第1行“)
代码:
country\u index=input('国家代码:')
def database\u uploader():
conn = pymysql.connect(host='localhost',
user='test_user',
password='',
db='%s'%country_index)
cur = conn.cursor()
path = r'C:\Users\Robin\Desktop\usa_indicator'
filenames = glob.glob(path + '/*.csv')
dfs = []
for files in filenames:
f = open(files)
fString = f.read()
fName = files[37:2]
for lines in fString.split('\n'):
dfs.append(lines.split(','))
DATE = dfs[0][1]; REALTIME_START = dfs[0][2]; VALUE = dfs[0][3]
queryCreateTable = """CREATE TABLE '%s'(
{} int,
{} int,
{} int
)"""%fName.format(DATE, REALTIME_START, VALUE)
cur.execute(queryCreateTable)
conn.close()
1条答案
按热度按时间at0kjp5o1#
运算符优先级导致
%
以及.format()
以不同的方式工作。.
优先级高于%
,所以它就像你写的一样被执行。您需要添加括号来覆盖此分析:
或者您可以只使用一个格式化运算符:
此外,表名和列名应该是反引号,而不是单引号。