鱼C论坛

 找回密码
 立即注册
查看: 2236|回复: 6

[已解决]python 连接数据库的问题

[复制链接]
发表于 2021-4-11 16:39:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import pymysql

DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'root'
DBNAME = 'mysql'

try:
    db = pymysql.connect(DBHOST='localhost', DBUSER='root', DBPASS='root', DBNAME='mysql')
    print('数据库连接成功!')
except pymysql.Error as e:
    print('数据库连接失败'+str(e))
报错内容为:
Traceback (most recent call last):
  File "D:\ 爬虫实战\main.py", line 9, in <module>
    db = pymysql.connect(DBHOST='localhost', DBUSER='root', DBPASS='root', DBNAME='mysql')
TypeError: __init__() got an unexpected keyword argument 'DBHOST'
请大佬指点!给大佬磕头了!!!
最佳答案
2021-4-12 13:43:05
这报错很明显 没有DBHOST这个设置变量名称。
正确的connect用法可以见下文

这是我之前应用数据库的一个实际例子,供你参考:
import pymysql as mq
conn = mq.connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='',
    db='biaobai',
    charset='utf8',
)
if(conn):
    print('true')
cur=conn.cursor()
cur.execute("select * from love_comment")
row_1=cur.fetchone()
print(row_1)
row_2=cur.fetchmany(2)
print("------------------\n",row_2)
row_3=cur.fetchall()
print("------------------\n",row_3) #由于指针的下移,fetchall不在从头开始检索,而是指针处开始
commentor="1" #excute执行SQL语句的时候,必须使用参数化的方式,否则必然产生SQL注入漏洞。
effect_rows = cur.executemany("INSERT INTO `love_comment` ( `love_id`, `commentor`, `comment`) VALUES ( %s, %s, %s)",[(1,commentor,"jiayoupy`"),(1,commentor,"jiayoupy1")])
print("-----------------------\neffct_rows=",effect_rows)
new_id = cur.lastrowid
print("newid=",new_id)
cur.execute("select comment from love_comment where commentor='1'")
row=cur.fetchone()
print(row)
conn.commit()
cur.close()
conn.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-11 17:07:22 | 显示全部楼层
没用过 pymysql
你试试这个呢

>>> import MySQLdb  as sql
>>> db = sql.connect("localhost", "root", "123456", "wpdata", charset='utf8' )   
>>> cursor = db.cursor()
>>> sqltxt="select * from worda"
>>> cursor.execute(sqltxt)
7512
>>> db.commit()
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-11 17:08:19 | 显示全部楼层
这个pip install mysql   就可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-11 19:00:29 | 显示全部楼层
db = pymysql.connect(DBHOST='localhost', DBUSER='root', DBPASS='root', DBNAME='mysql')这里的参数错误
改成如下
db = pymysql.connect(host='localhost', user='root', password='root', database='mysql')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-11 22:01:24 | 显示全部楼层
connect的参数如下
host=None, user=None, password="",
                 database=None, port=0, unix_socket=None,
                 charset='', sql_mode=None,
                 read_default_file=None, conv=None, use_unicode=None,
                 client_flag=0, cursorclass=Cursor, init_command=None,
                 connect_timeout=10, ssl=None, read_default_group=None,
                 compress=None, named_pipe=None,
                 autocommit=False, db=None, passwd=None, local_infile=False,
                 max_allowed_packet=16*1024*1024, defer_connect=False,
                 auth_plugin_map=None, read_timeout=None, write_timeout=None,
                 bind_address=None, binary_prefix=False, program_name=None,
                 server_public_key=None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-4-12 13:24:36 | 显示全部楼层
试试这个
1618205018(1).jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-12 13:43:05 | 显示全部楼层    本楼为最佳答案   
这报错很明显 没有DBHOST这个设置变量名称。
正确的connect用法可以见下文

这是我之前应用数据库的一个实际例子,供你参考:
import pymysql as mq
conn = mq.connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='',
    db='biaobai',
    charset='utf8',
)
if(conn):
    print('true')
cur=conn.cursor()
cur.execute("select * from love_comment")
row_1=cur.fetchone()
print(row_1)
row_2=cur.fetchmany(2)
print("------------------\n",row_2)
row_3=cur.fetchall()
print("------------------\n",row_3) #由于指针的下移,fetchall不在从头开始检索,而是指针处开始
commentor="1" #excute执行SQL语句的时候,必须使用参数化的方式,否则必然产生SQL注入漏洞。
effect_rows = cur.executemany("INSERT INTO `love_comment` ( `love_id`, `commentor`, `comment`) VALUES ( %s, %s, %s)",[(1,commentor,"jiayoupy`"),(1,commentor,"jiayoupy1")])
print("-----------------------\neffct_rows=",effect_rows)
new_id = cur.lastrowid
print("newid=",new_id)
cur.execute("select comment from love_comment where commentor='1'")
row=cur.fetchone()
print(row)
conn.commit()
cur.close()
conn.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-14 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表