亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

編程錯誤 1064 在 Python 中使用 MySQL 從現有表中選擇表

編程錯誤 1064 在 Python 中使用 MySQL 從現有表中選擇表

嗶嗶one 2022-09-27 09:50:14
我在云中有一個現有的表,我想制作它的副本。我通過pymysql連接到我的數據庫,從新用戶提供的輸入中提取用戶名,并且我想創建一個由用戶名調用的新表,該表將是原始表的副本。當我運行下面的代碼時,我有以下錯誤:pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''username' AS SELECT * FROM original_table' at line 1")uname = [email protected] = pymysql.connect(                    host="db.host",                    port=int(3306),                    user=user,                    passwd=password,                    db=db,                    charset='utf8mb4'                )                cur = conn.cursor()                table_name = uname.replace('@', '_').replace('.', '_')                print('TABLE NAME:', table_name)                cur.execute(""" CREATE TABLE %s AS SELECT * FROM original_table """, (table_name))
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

參數引用用于引用。引用表名不起作用,因為在MySQL中,引用表名的方法是使用反引號('),而不是引號。

MariaDB [test]>  CREATE TABLE 'username' AS SELECT * FROM my_table;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''username' AS SELECT * FROM my_table' at line 1

因此,您需要使用字符串格式來創建 SQL 語句(可以使用反引號來防御 SQL 注入*):

cur.execute(""" CREATE TABLE `%s` AS SELECT * FROM original_table """ % table_name)

*我不是SQL注入方面的專家,所以如果起源于你的應用程序之外,請做一些研究。table_name


查看完整回答
反對 回復 2022-09-27
  • 1 回答
  • 0 關注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號