通过python程序插入数据库(mysql)[重复]
Posted
技术标签:
【中文标题】通过python程序插入数据库(mysql)[重复]【英文标题】:inserting into a database (mysql) via a python program [duplicate] 【发布时间】:2017-08-16 13:13:23 【问题描述】:我熟悉python,也熟悉mysql和SQL。我也很清楚 con、cur 和 commit,但我的问题是我试图在 python 中制作一个小程序(不需要 gui)将数据插入 mysql 数据库,并将其带到我的控制台或文件中。我很困惑从哪里开始,我尝试搜索谷歌,但我找不到任何关于我的问题的教程,有什么帮助吗?一个链接或从哪里开始。另外:
我知道python程序可以写在IDE或文本文件中,但是它是如何连接到mysql数据库的呢?如果我错了,请纠正我。
【问题讨论】:
尝试用文本搜索python程序从数据库中获取数据搜索Google本身是个好技能 我确实做到了,但我没有得到任何东西,这里重要的是如何写入数据库,这是我没有得到的,我知道我们会使用程序里面有sql,但是不明白怎么连接mysql数据库 使用 mysqldb python 库并在此处阅读文档:mysql-python.sourceforge.net/MySQLdb.html 【参考方案1】:请看下面的代码
import mysql.connector
from mysql.connector import MySQLConnection, Error
class SQL_Connect:
def __init__(self):
#-------------------------------------------------------
# Database Connection Param's
self.host_Address = 'Host Here'
self.database_Name = 'Database Name'
self.userName = 'User Name'
self.db_Password = 'Password'
#-------------------------------------------------------
def insert_IntoDB(self, Manufacturer, partNum, formFactor, socket, chipSet, memSlots, memType, maxMem, raidSup, onboardVid, crosFire_Sup, sli_Sup, sata6GBS, sataExpress, onboard_Ether):
test_Query = 'INSERT INTO motherboards (Manufacturer, modelNum, formFactor, socket, chipset, memSlots, memType, maxMem, raidSup, onboardVid, crosfireSup, sliSup, sata6GBS, sataExpress, onboardEther) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)'
args = (Manufacturer, partNum, formFactor, socket, chipSet, memSlots, memType, maxMem, raidSup, onboardVid, crosFire_Sup, sli_Sup, sata6GBS, sataExpress, onboard_Ether)
try:
conn = mysql.connector.connect(host = self.host_Address, database = self.database_Name, user = self.userName, password = self.db_Password)
if conn.is_connected():
print 'MySQL Database Connection Established'
cursor = conn.cursor()
cursor.execute(test_Query, args)
conn.commit()
print 'Data Inserted!!!'
except Error as e:
print ('ERROR: ',e)
finally:
cursor.close()
conn.close()
【讨论】:
【参考方案2】:通过documentation 熟悉python、mysql 以及如何一起使用它们。
虽然,最小的代码看起来像这样:
import MySQLdb
query = "insert into DB_NAME values (1,2)"
try :
conn = MySQLdb.connect(host="",
user="",
passwd="",
db="")
cursor = conn.cursor()
cursor.execute(query)
conn.commit()
cursor.close()
conn.close()
except (MySQLdb.Error, Exception) as error :
print error
print "Insert data unsuccessful"
【讨论】:
谢谢大家,我让它工作了!我使用 pymysql 而不是 mysqldb,因为它更容易并且问题更少。【参考方案3】:SQLAlchemy 不错:https://www.sqlalchemy.org/
否则,使用您描述的 conn/cur 很容易:https://www.tutorialspoint.com/python/python_database_access.htm
【讨论】:
以上是关于通过python程序插入数据库(mysql)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过mysql或python将数据插入到另一个具有相同id的表中