猿问

尝试在python中放置mysql表名的变量

day = datetime.datetime.today().strftime('%Y%m%d')


def connect():


    conn = None

    try:

        conn = mysql.connector.connect(user='elijah', password='12345678',

                                      host='127.0.0.1', database='userdb',

                                      auth_plugin='mysql_native_password')

        if conn.is_connected():

            print('Connected to MySQL database')

        cursor = conn.cursor()

        sql = '''CREATE TABLE %s(

        id INT AUTO_INCREMENT PRIMARY KEY,

        title VARCHAR(255) NOT NULL,

        rating VARCHAR(255) NOT NULL, 

        reservation_rate VARCHAR(255) NOT NULL

        )'''%day

        cursor.execute(sql)

我试图在表名中插入一个变量,但它一直给我这个错误:


1064 (42000): 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 '20200320(

        id INT AUTO_INCREMENT PRIMARY KEY,

        title VARCHAR(255) ' at line 1

我已经尝试了格式,字符串串联和%s替换到目前为止没有任何效果。


哆啦的时光机
浏览 122回答 1
1回答

慕妹3146593

MySQL中的对象名称(例如表)不能以数字开头。您可以通过在字母前加上一个字母来创建一个有效的名称,例如:sql = '''CREATE TABLE t%s(id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,rating VARCHAR(255) NOT NULL, reservation_rate VARCHAR(255) NOT NULL)'''%day但是,如果您绝对必须使用此名称,则可以使用反引号对其进行转义:sql = '''CREATE TABLE `%s`(id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,rating VARCHAR(255) NOT NULL, reservation_rate VARCHAR(255) NOT NULL)'''%day
随时随地看视频慕课网APP

相关分类

Python
我要回答