msx6666 发表于 2021-4-11 16:39:50

python 连接数据库的问题

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'
请大佬指点!给大佬磕头了!!!

wp231957 发表于 2021-4-11 17:07:22

没用过 pymysql
你试试这个呢

>>> import MySQLdbas sql
>>> db = sql.connect("localhost", "root", "123456", "wpdata", charset='utf8' )   
>>> cursor = db.cursor()
>>> sqltxt="select * from worda"
>>> cursor.execute(sqltxt)
7512
>>> db.commit()
>>>

wp231957 发表于 2021-4-11 17:08:19

这个pip install mysql   就可以

redforce 发表于 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')

redforce 发表于 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

pipifish 发表于 2021-4-12 13:24:36

试试这个{:10_256:}

591821661 发表于 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()
页: [1]
查看完整版本: python 连接数据库的问题