您的位置:

使用Python实现数据库连接与操作

一、连接数据库

在使用Python操作数据库之前,我们需要先连接数据库。Python中很多第三方库可以支持数据库连接,如PyMySQL、psycopg2等。

以PyMySQL为例,在使用之前需要先安装PyMySQL库。

    
        pip install PyMySQL
    

连接数据库需要提供数据库的地址、用户名、密码、数据库名等信息,具体代码如下:

    
        import pymysql

        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )
    

上述代码中,db就是所连接的数据库

二、创建表

在连接数据库之后,我们可以通过Python代码创建表。创建表需要使用SQL语句,使用Python的MySQLCursor.execute()方法执行SQL语句即可。

    
        import pymysql
    
        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )
    
        cursor = db.cursor()

        # SQL语句
        sql = '''
            CREATE TABLE `users` (
                `id` int(11) NOT NULL AUTO_INCREMENT,
                `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                `age` int(11) DEFAULT NULL,
                `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
                PRIMARY KEY (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
        '''

        # 执行SQL语句
        cursor.execute(sql)

        # 提交到数据库
        db.commit()

        # 关闭游标和数据库连接
        cursor.close()
        db.close()
    

上述代码中,我们使用了CREATE TABLE语句创建了一个名为users的表,表中包含了id、name、age、email四个字段。

三、插入数据

在创建了表之后,我们可以使用Python代码向表中插入数据。插入数据同样需要使用SQL语句,Python的MySQLCursor.execute()方法同样可以执行插入数据的SQL语句。

    
        import pymysql
    
        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )
    
        cursor = db.cursor()

        # SQL语句
        sql = "INSERT INTO `users`(`name`, `age`, `email`) VALUES ('Tom', 20, 'tom@example.com')"

        # 执行SQL语句
        cursor.execute(sql)
        
        # 提交到数据库
        db.commit()

        # 关闭游标和数据库连接
        cursor.close()
        db.close()
    

上述代码中,我们使用INSERT INTO语句向users表中插入了一条数据。

四、查询数据

在向表中插入了数据之后,我们可以使用Python代码查询数据。查询数据同样需要使用SQL语句,Python的MySQLCursor.execute()方法同样可以执行查询数据的SQL语句。查询数据之后需要使用MySQLCursor.fetchall()方法获取查询结果,并且必须在查询完毕之后关闭游标。

    
        import pymysql

        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )

        cursor = db.cursor()

        # SQL语句
        sql = "SELECT * FROM `users`"

        # 执行SQL语句
        cursor.execute(sql)

        # 获取查询结果
        results = cursor.fetchall()

        for row in results:
            id = row[0]
            name = row[1]
            age = row[2]
            email = row[3]

            print(f"id={id}, name={name}, age={age}, email={email}")

        # 关闭游标和数据库连接
        cursor.close()
        db.close()
    

上述代码中,我们使用SELECT语句查询了users表中的所有数据,并将查询结果打印输出。

五、更新数据

在查询到数据之后,我们也可以使用Python代码更新数据。更新数据同样需要使用SQL语句,并且需要使用Python的MySQLCursor.execute()方法执行更新数据的SQL语句。

    
        import pymysql

        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )

        cursor = db.cursor()

        # SQL语句
        sql = "UPDATE `users` SET `email`='tom_new@example.com' WHERE `name`='Tom'"

        # 执行SQL语句
        cursor.execute(sql)

        # 提交到数据库
        db.commit()

        # 关闭游标和数据库连接
        cursor.close()
        db.close()
    

上述代码中,我们使用UPDATE语句将users表中name为Tom的记录的email字段更新为tom_new@example.com。

六、删除数据

在删除数据之前,我们需要知道需要删除哪些数据,并且需要使用SQL语句执行删除数据的操作。Python的MySQLCursor.execute()方法同样可以执行删除数据的SQL语句。

    
        import pymysql

        db = pymysql.connect(
            host='localhost',
            user='root',
            password='password',
            database='database_name'
        )

        cursor = db.cursor()

        # SQL语句
        sql = "DELETE FROM `users` WHERE `name`='Tom'"

        # 执行SQL语句
        cursor.execute(sql)

        # 提交到数据库
        db.commit()

        # 关闭游标和数据库连接
        cursor.close()
        db.close()
    

上述代码中,我们使用DELETE语句将users表中name为Tom的记录删除。