能否请别人告诉我我的语法有什么问题? 自2天以来,我尝试在此问题上得到一个不错的答案,但有人会给我减分,还是让我参考我已经读过https://docs.djangoproject.com/en/3.0/topics/db/sql/
的Django文档。tablename = '2020-10-table'
v_col = ["userID int(11)", "TID varchar(128)", "CID varchar(128)", "SID varchar(255)", "Timestamp bigint(20)", "LX int(10)", "LocY int(10)", "Width int(10)", "Height int(10)", "Tag varchar(512)"]
connection.execute("""CREATE TABLE IF NOT EXISTS `%s` %s""", [tablename, '( '+str(', '.join(v_col))+' )'])
我一直收到:
MySQLdb._exceptions.ProgrammingError:(1064,“您在 您的SQL语法;检查与您的MySQL对应的手册 在``(userID int(11),TI附近使用正确语法的服务器版本 ......
有人可以指出我的问题吗?
更新:
我发现Django在内部将我的字符串作为字节串处理:
b"CREATE TABLE IF NOT EXISTS `'2020-10-table'` '(userID int(11), TID varchar(128), CID varchar(128), SID varchar(255), Timestamp bigint(20), LX int(10), LocY int(10), Width int(10), Height int(10), Tag varchar(512))'"
这显然不是有效的sql?!?
现在我不知道如何进行。
答案 0 :(得分:0)
首先,我认为您不应该使用'%s',如果这些引用在%s周围,因为这样会使您的数据库不受SQL注入攻击的侵扰
第二,我认为您必须像这样使用connection.cursor:
with connection.cursor() as cursor:
cursor.execute("""CREATE TABLE IF NOT EXISTS %s %s""", [tablename, '( '+str(',
'.join(v_col))+' )'])