【问题标题】:How to insert Records of data into MySQL database with python?如何使用 python 将数据记录插入 MySQL 数据库?
【发布时间】:2013-11-23 01:31:29
【问题描述】:

我有一个包含名字、姓氏、年龄和性别的表格。我正在使用 MySQL 数据库。 在使用 MySQl db 时,我们是否需要创建表,在单个 pythonic 脚本中进行插入操作?

例如:

#!/usr/bin/python

import MySQLdb

db = MySQLdb.connect("localhost", "usename", "password", "TESTDB")

cursor = db.cursor()
cursor.execute ( """
    CREATE TABLE PERSON 
    ( 
     F_NAME CHAR(20) NOT NULL, 
     L_NAME CHAR(20), 
     AGE INT, 
     GENDER CHAR(4)
    )
 """)
cursor.execute( """
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES
        ('Neeraj','Lad','22','Male'),
        ('Vivek','Pal','24','Male')  
 """)
print cursor.rowcount

编辑代码:

#!/usr/bin/python

import MySQLdb
import cgi

print "Content-type: text/html\n"

form = cgi.FieldStorage()
f_Name = form.getvalue('firstname', '')
l_Name = form.getvalue('lastname', '')
age = form.getvalue('age', 0)
gender = form.getvalue('gender', '')

db = MySQLdb.connect(host="", user="", password="", db="")

cursor = db.cursor()

sql =  "INSERT INTO PERSON (F_NAME, L_NAME, Age, Gender) VALUES (%s, %s, %s, %s)" %(f_name, l_name, age, gender) 
cursor.execute(sql)
db.commit()
db.close()

【问题讨论】:

  • 请不要尝试将您的问题编辑成您认为正确的答案。这个问题应该是一个有用的问题,可以通过一个有用的答案来回答。这样,如果有人和你有同样的问题,他们可以在搜索中找到你的问题,答案也会对他们有所帮助,为大家节省大量时间。

标签: python database cgi mysql-python


【解决方案1】:

您只需要创建一次表。您可以使用 mysql CLI 工具、phpmyadmin、python/MySQLdb 或其他方法来执行此操作。

如果表PERSON 已经存在,CREATE TABLE PERSON 将引发错误。如果您想在 Python 脚本中创建它,请使用 IF NOT EXISTS,这样您的程序的后续运行不会引发错误:

cursor.execute ( """
    CREATE TABLE IF NOT EXISTS PERSON 
    ( 
     F_NAME CHAR(20) NOT NULL, 
     L_NAME CHAR(20), 
     AGE INT, 
     GENDER CHAR(4)
    )
 """)

【讨论】:

  • 我应该在mysql数据库中创建表还是应该在我的python脚本中创建?
  • 你需要在MySQL数据库中创建表。使用 python/MySQLdb 只是一种方法。使用 python 的一个好处是您将拥有可以自动创建表的代码。但是,您可能希望将其放在 不同的 脚本中,因为如果表已经存在,则没有理由(尝试)创建表。
  • 我在 Linux 操作系统中工作。所以我需要通过我的python代码创建它?我想 ?我不确定,但是
【解决方案2】:

我不是 100% 清楚你在问什么,但我会猜测一下。

你必须在数据库中创建一个表,然后才能插入它。

如果您的 Python 脚本每次运行时都与一个全新的数据库通信,那么它需要一个 CREATE TABLE 语句。

如果您的 Python 脚本可能与一个全新的数据库通信,但通常会与一个已经存在的数据库通信,那么您可以使用 CREATE TABLE IF NOT EXISTS。

但是,除了玩具学习项目之外,这两种情况都很少见。通常,您创建数据库一次,然后编写连接到它的 Python 脚本并假设它已经创建。在这种情况下,您的表单处理程序中不会有 CREATE TABLE 语句。

如果您要在单个 INSERT 语句中插入多个值……通常,您不会插入像 'Neeraj' 这样的硬编码值,而是动态获取的值(例如,从网络形式)。所以你会像这样使用parameterized SQL statements:

cursor.execute("""
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES (%s, %s, %s, %s)
""", (f_name, l_name, age, gender))

在这种情况下,如果您有一个由 4 元组组成的列表,每个元组代表一个人,并且您想插入所有这些元组,则不要通过在 SQL 语句中放置参数列表的多个副本来做到这一点,但是通过放置一个参数列表,并使用 executemany 函数:

cursor.execute("""
    INSERT INTO PERSON (F_NAME, L_NAME, AGE, GENDER)
    VALUES (%s, %s, %s, %s)
""", list_of_people)

【讨论】:

  • 请检查更新后的代码。价值来自于形式。我写的对吗?
  • 是的,看起来不错。但是现在您已经编辑了您的问题,因此不再有任何问题,因此对于与您有类似问题的任何人都将毫无用处。请不要那样做。
猜你喜欢
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2015-05-21
相关资源
最近更新 更多