【问题标题】: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
相关资源
最近更新 更多